mindroot 9.10.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.

Files changed (418) hide show
  1. mindroot/__init__.py +1 -0
  2. mindroot/coreplugins/__init__.py +2 -0
  3. mindroot/coreplugins/home/templates/home.jinja2 +1 -0
  4. mindroot/docs/Makefile +20 -0
  5. mindroot/docs/_build/doctrees/chat_with_assistant.doctree +0 -0
  6. mindroot/docs/_build/doctrees/developer_documentation.doctree +0 -0
  7. mindroot/docs/_build/doctrees/environment.pickle +0 -0
  8. mindroot/docs/_build/doctrees/getting_started.doctree +0 -0
  9. mindroot/docs/_build/doctrees/index.doctree +0 -0
  10. mindroot/docs/_build/doctrees/install_plugins_with_tools.doctree +0 -0
  11. mindroot/docs/_build/doctrees/installation.doctree +0 -0
  12. mindroot/docs/_build/doctrees/llm_api_key.doctree +0 -0
  13. mindroot/docs/_build/doctrees/llm_plugin_installation.doctree +0 -0
  14. mindroot/docs/_build/doctrees/programming_task.doctree +0 -0
  15. mindroot/docs/_build/doctrees/source/ahp.doctree +0 -0
  16. mindroot/docs/_build/doctrees/source/mindroot.coreplugins.admin.doctree +0 -0
  17. mindroot/docs/_build/doctrees/source/mindroot.coreplugins.api_keys.doctree +0 -0
  18. mindroot/docs/_build/doctrees/source/mindroot.coreplugins.chat.doctree +0 -0
  19. mindroot/docs/_build/doctrees/source/mindroot.coreplugins.chat_avatar.doctree +0 -0
  20. mindroot/docs/_build/doctrees/source/mindroot.coreplugins.check_list.doctree +0 -0
  21. mindroot/docs/_build/doctrees/source/mindroot.coreplugins.credits.doctree +0 -0
  22. mindroot/docs/_build/doctrees/source/mindroot.coreplugins.doctree +0 -0
  23. mindroot/docs/_build/doctrees/source/mindroot.coreplugins.email.doctree +0 -0
  24. mindroot/docs/_build/doctrees/source/mindroot.coreplugins.env_manager.doctree +0 -0
  25. mindroot/docs/_build/doctrees/source/mindroot.coreplugins.events.doctree +0 -0
  26. mindroot/docs/_build/doctrees/source/mindroot.coreplugins.index.doctree +0 -0
  27. mindroot/docs/_build/doctrees/source/mindroot.coreplugins.index.handlers.doctree +0 -0
  28. mindroot/docs/_build/doctrees/source/mindroot.coreplugins.jwt_auth.doctree +0 -0
  29. mindroot/docs/_build/doctrees/source/mindroot.coreplugins.l8n.doctree +0 -0
  30. mindroot/docs/_build/doctrees/source/mindroot.coreplugins.mcp_.doctree +0 -0
  31. mindroot/docs/_build/doctrees/source/mindroot.coreplugins.persona.doctree +0 -0
  32. mindroot/docs/_build/doctrees/source/mindroot.coreplugins.startup.doctree +0 -0
  33. mindroot/docs/_build/doctrees/source/mindroot.coreplugins.subscriptions.doctree +0 -0
  34. mindroot/docs/_build/doctrees/source/mindroot.coreplugins.usage.doctree +0 -0
  35. mindroot/docs/_build/doctrees/source/mindroot.coreplugins.user_service.doctree +0 -0
  36. mindroot/docs/_build/doctrees/source/mindroot.doctree +0 -0
  37. mindroot/docs/_build/doctrees/source/mindroot.lib.auth.doctree +0 -0
  38. mindroot/docs/_build/doctrees/source/mindroot.lib.doctree +0 -0
  39. mindroot/docs/_build/doctrees/source/mindroot.lib.json_str_block.doctree +0 -0
  40. mindroot/docs/_build/doctrees/source/mindroot.lib.plugins.doctree +0 -0
  41. mindroot/docs/_build/doctrees/source/mindroot.lib.providers.backup.doctree +0 -0
  42. mindroot/docs/_build/doctrees/source/mindroot.lib.providers.doctree +0 -0
  43. mindroot/docs/_build/doctrees/source/mindroot.registry.doctree +0 -0
  44. mindroot/docs/_build/doctrees/source/modules.doctree +0 -0
  45. mindroot/docs/_build/doctrees/source/mr_agent_expert_instr.doctree +0 -0
  46. mindroot/docs/_build/doctrees/starting_mindroot.doctree +0 -0
  47. mindroot/docs/_build/doctrees/user_documentation.doctree +0 -0
  48. mindroot/docs/_build/html/.buildinfo +4 -0
  49. mindroot/docs/_build/html/.buildinfo.bak +4 -0
  50. mindroot/docs/_build/html/_images/envvar.png +0 -0
  51. mindroot/docs/_build/html/_images/files.png +0 -0
  52. mindroot/docs/_build/html/_images/installopenrouter.png +0 -0
  53. mindroot/docs/_build/html/_images/mood.png +0 -0
  54. mindroot/docs/_build/html/_images/moon.png +0 -0
  55. mindroot/docs/_build/html/_images/openrouter.png +0 -0
  56. mindroot/docs/_build/html/_images/restart.png +0 -0
  57. mindroot/docs/_build/html/_modules/index.html +425 -0
  58. mindroot/docs/_build/html/_modules/mindroot/coreplugins/admin/agent_importer.html +292 -0
  59. mindroot/docs/_build/html/_modules/mindroot/coreplugins/admin/agent_router.html +620 -0
  60. mindroot/docs/_build/html/_modules/mindroot/coreplugins/admin/asset_manager.html +289 -0
  61. mindroot/docs/_build/html/_modules/mindroot/coreplugins/admin/command_router.html +518 -0
  62. mindroot/docs/_build/html/_modules/mindroot/coreplugins/admin/mcp_catalog_routes.html +275 -0
  63. mindroot/docs/_build/html/_modules/mindroot/coreplugins/admin/mcp_publish_routes.html +581 -0
  64. mindroot/docs/_build/html/_modules/mindroot/coreplugins/admin/mcp_registry_routes.html +623 -0
  65. mindroot/docs/_build/html/_modules/mindroot/coreplugins/admin/mcp_routes.html +347 -0
  66. mindroot/docs/_build/html/_modules/mindroot/coreplugins/admin/mod.html +163 -0
  67. mindroot/docs/_build/html/_modules/mindroot/coreplugins/admin/oauth_callback_router.html +188 -0
  68. mindroot/docs/_build/html/_modules/mindroot/coreplugins/admin/persona_handler.html +195 -0
  69. mindroot/docs/_build/html/_modules/mindroot/coreplugins/admin/persona_router.html +428 -0
  70. mindroot/docs/_build/html/_modules/mindroot/coreplugins/admin/plugin_manager.html +610 -0
  71. mindroot/docs/_build/html/_modules/mindroot/coreplugins/admin/plugin_router.html +146 -0
  72. mindroot/docs/_build/html/_modules/mindroot/coreplugins/admin/plugin_routes.html +230 -0
  73. mindroot/docs/_build/html/_modules/mindroot/coreplugins/admin/registry_settings_routes.html +253 -0
  74. mindroot/docs/_build/html/_modules/mindroot/coreplugins/admin/router.html +267 -0
  75. mindroot/docs/_build/html/_modules/mindroot/coreplugins/admin/server_router.html +271 -0
  76. mindroot/docs/_build/html/_modules/mindroot/coreplugins/admin/service_models.html +195 -0
  77. mindroot/docs/_build/html/_modules/mindroot/coreplugins/admin/settings_router.html +403 -0
  78. mindroot/docs/_build/html/_modules/mindroot/coreplugins/api_keys/api_key_manager.html +215 -0
  79. mindroot/docs/_build/html/_modules/mindroot/coreplugins/api_keys/mod.html +127 -0
  80. mindroot/docs/_build/html/_modules/mindroot/coreplugins/api_keys/router.html +170 -0
  81. mindroot/docs/_build/html/_modules/mindroot/coreplugins/chat/commands.html +565 -0
  82. mindroot/docs/_build/html/_modules/mindroot/coreplugins/chat/mod.html +118 -0
  83. mindroot/docs/_build/html/_modules/mindroot/coreplugins/chat/models.html +130 -0
  84. mindroot/docs/_build/html/_modules/mindroot/coreplugins/chat/router.html +571 -0
  85. mindroot/docs/_build/html/_modules/mindroot/coreplugins/chat/services.html +645 -0
  86. mindroot/docs/_build/html/_modules/mindroot/coreplugins/chat/widget_manager.html +258 -0
  87. mindroot/docs/_build/html/_modules/mindroot/coreplugins/chat/widget_routes.html +409 -0
  88. mindroot/docs/_build/html/_modules/mindroot/coreplugins/check_list/mod.html +460 -0
  89. mindroot/docs/_build/html/_modules/mindroot/coreplugins/credits/conversion.html +232 -0
  90. mindroot/docs/_build/html/_modules/mindroot/coreplugins/credits/ledger.html +283 -0
  91. mindroot/docs/_build/html/_modules/mindroot/coreplugins/credits/mod.html +355 -0
  92. mindroot/docs/_build/html/_modules/mindroot/coreplugins/credits/models.html +269 -0
  93. mindroot/docs/_build/html/_modules/mindroot/coreplugins/credits/router.html +306 -0
  94. mindroot/docs/_build/html/_modules/mindroot/coreplugins/credits/storage.html +257 -0
  95. mindroot/docs/_build/html/_modules/mindroot/coreplugins/email/email_provider.html +159 -0
  96. mindroot/docs/_build/html/_modules/mindroot/coreplugins/email/imap_handler.html +343 -0
  97. mindroot/docs/_build/html/_modules/mindroot/coreplugins/email/mod.html +210 -0
  98. mindroot/docs/_build/html/_modules/mindroot/coreplugins/email/services.html +172 -0
  99. mindroot/docs/_build/html/_modules/mindroot/coreplugins/email/smtp_handler.html +188 -0
  100. mindroot/docs/_build/html/_modules/mindroot/coreplugins/email/test_email_service.html +179 -0
  101. mindroot/docs/_build/html/_modules/mindroot/coreplugins/env_manager/mod.html +409 -0
  102. mindroot/docs/_build/html/_modules/mindroot/coreplugins/env_manager/router.html +147 -0
  103. mindroot/docs/_build/html/_modules/mindroot/coreplugins/events/router.html +201 -0
  104. mindroot/docs/_build/html/_modules/mindroot/coreplugins/index/handlers/agent_ops.html +195 -0
  105. mindroot/docs/_build/html/_modules/mindroot/coreplugins/index/handlers/index_ops.html +214 -0
  106. mindroot/docs/_build/html/_modules/mindroot/coreplugins/index/handlers/plugin_ops.html +263 -0
  107. mindroot/docs/_build/html/_modules/mindroot/coreplugins/index/handlers/publish.html +225 -0
  108. mindroot/docs/_build/html/_modules/mindroot/coreplugins/index/mod.html +120 -0
  109. mindroot/docs/_build/html/_modules/mindroot/coreplugins/index/models.html +148 -0
  110. mindroot/docs/_build/html/_modules/mindroot/coreplugins/index/router.html +184 -0
  111. mindroot/docs/_build/html/_modules/mindroot/coreplugins/index/utils.html +166 -0
  112. mindroot/docs/_build/html/_modules/mindroot/coreplugins/jwt_auth/middleware.html +400 -0
  113. mindroot/docs/_build/html/_modules/mindroot/coreplugins/jwt_auth/mod.html +153 -0
  114. mindroot/docs/_build/html/_modules/mindroot/coreplugins/jwt_auth/router.html +134 -0
  115. mindroot/docs/_build/html/_modules/mindroot/coreplugins/l8n/language_detection.html +296 -0
  116. mindroot/docs/_build/html/_modules/mindroot/coreplugins/l8n/middleware.html +258 -0
  117. mindroot/docs/_build/html/_modules/mindroot/coreplugins/l8n/mod.html +393 -0
  118. mindroot/docs/_build/html/_modules/mindroot/coreplugins/l8n/test_enhanced.html +408 -0
  119. mindroot/docs/_build/html/_modules/mindroot/coreplugins/l8n/test_l8n_standalone.html +379 -0
  120. mindroot/docs/_build/html/_modules/mindroot/coreplugins/l8n/test_middleware.html +394 -0
  121. mindroot/docs/_build/html/_modules/mindroot/coreplugins/l8n/utils.html +348 -0
  122. mindroot/docs/_build/html/_modules/mindroot/coreplugins/mcp_/catalog_commands.html +456 -0
  123. mindroot/docs/_build/html/_modules/mindroot/coreplugins/mcp_/catalog_manager.html +409 -0
  124. mindroot/docs/_build/html/_modules/mindroot/coreplugins/mcp_/dynamic_commands.html +267 -0
  125. mindroot/docs/_build/html/_modules/mindroot/coreplugins/mcp_/mcp_manager.html +1186 -0
  126. mindroot/docs/_build/html/_modules/mindroot/coreplugins/mcp_/mod.html +510 -0
  127. mindroot/docs/_build/html/_modules/mindroot/coreplugins/mcp_/oauth_storage.html +260 -0
  128. mindroot/docs/_build/html/_modules/mindroot/coreplugins/mcp_/server_installer.html +195 -0
  129. mindroot/docs/_build/html/_modules/mindroot/coreplugins/mcp_/testmcpclient.html +217 -0
  130. mindroot/docs/_build/html/_modules/mindroot/coreplugins/persona/init_persona.html +117 -0
  131. mindroot/docs/_build/html/_modules/mindroot/coreplugins/persona/mod.html +276 -0
  132. mindroot/docs/_build/html/_modules/mindroot/coreplugins/startup/mod.html +122 -0
  133. mindroot/docs/_build/html/_modules/mindroot/coreplugins/subscriptions/credit_integration.html +163 -0
  134. mindroot/docs/_build/html/_modules/mindroot/coreplugins/subscriptions/mod.html +1089 -0
  135. mindroot/docs/_build/html/_modules/mindroot/coreplugins/subscriptions/models.html +261 -0
  136. mindroot/docs/_build/html/_modules/mindroot/coreplugins/subscriptions/router.html +502 -0
  137. mindroot/docs/_build/html/_modules/mindroot/coreplugins/subscriptions/storage.html +413 -0
  138. mindroot/docs/_build/html/_modules/mindroot/coreplugins/subscriptions/stripe_integration.html +178 -0
  139. mindroot/docs/_build/html/_modules/mindroot/coreplugins/subscriptions/subscription_manager.html +289 -0
  140. mindroot/docs/_build/html/_modules/mindroot/coreplugins/subscriptions/webhook_handler.html +327 -0
  141. mindroot/docs/_build/html/_modules/mindroot/coreplugins/usage/handlers.html +157 -0
  142. mindroot/docs/_build/html/_modules/mindroot/coreplugins/usage/mod.html +253 -0
  143. mindroot/docs/_build/html/_modules/mindroot/coreplugins/usage/models.html +141 -0
  144. mindroot/docs/_build/html/_modules/mindroot/coreplugins/usage/reporting.html +226 -0
  145. mindroot/docs/_build/html/_modules/mindroot/coreplugins/usage/router.html +228 -0
  146. mindroot/docs/_build/html/_modules/mindroot/coreplugins/usage/storage.html +264 -0
  147. mindroot/docs/_build/html/_modules/mindroot/coreplugins/user_service/admin_init.html +234 -0
  148. mindroot/docs/_build/html/_modules/mindroot/coreplugins/user_service/email_service.html +204 -0
  149. mindroot/docs/_build/html/_modules/mindroot/coreplugins/user_service/mod.html +260 -0
  150. mindroot/docs/_build/html/_modules/mindroot/coreplugins/user_service/models.html +148 -0
  151. mindroot/docs/_build/html/_modules/mindroot/coreplugins/user_service/password_reset_service.html +336 -0
  152. mindroot/docs/_build/html/_modules/mindroot/coreplugins/user_service/role_service.html +183 -0
  153. mindroot/docs/_build/html/_modules/mindroot/coreplugins/user_service/router.html +202 -0
  154. mindroot/docs/_build/html/_modules/mindroot/lib/auth/api_key.html +129 -0
  155. mindroot/docs/_build/html/_modules/mindroot/lib/auth/auth.html +203 -0
  156. mindroot/docs/_build/html/_modules/mindroot/lib/buchatlog.html +259 -0
  157. mindroot/docs/_build/html/_modules/mindroot/lib/buchatlog2.html +500 -0
  158. mindroot/docs/_build/html/_modules/mindroot/lib/butemplates.html +415 -0
  159. mindroot/docs/_build/html/_modules/mindroot/lib/chatcontext.html +401 -0
  160. mindroot/docs/_build/html/_modules/mindroot/lib/chatlog.html +619 -0
  161. mindroot/docs/_build/html/_modules/mindroot/lib/chatlog_optimized.html +655 -0
  162. mindroot/docs/_build/html/_modules/mindroot/lib/json_escape.html +138 -0
  163. mindroot/docs/_build/html/_modules/mindroot/lib/json_str_block/json_str_block.html +213 -0
  164. mindroot/docs/_build/html/_modules/mindroot/lib/parent_templates.html +181 -0
  165. mindroot/docs/_build/html/_modules/mindroot/lib/plugins/installation.html +481 -0
  166. mindroot/docs/_build/html/_modules/mindroot/lib/plugins/l8n_static_handler.html +347 -0
  167. mindroot/docs/_build/html/_modules/mindroot/lib/plugins/loader.html +403 -0
  168. mindroot/docs/_build/html/_modules/mindroot/lib/plugins/loader_with_l8n.html +391 -0
  169. mindroot/docs/_build/html/_modules/mindroot/lib/plugins/manifest.html +450 -0
  170. mindroot/docs/_build/html/_modules/mindroot/lib/plugins/mapping.html +127 -0
  171. mindroot/docs/_build/html/_modules/mindroot/lib/plugins/paths.html +215 -0
  172. mindroot/docs/_build/html/_modules/mindroot/lib/plugins_install.html +171 -0
  173. mindroot/docs/_build/html/_modules/mindroot/lib/providers/commands.html +125 -0
  174. mindroot/docs/_build/html/_modules/mindroot/lib/providers/hooks.html +117 -0
  175. mindroot/docs/_build/html/_modules/mindroot/lib/providers/missing.html +169 -0
  176. mindroot/docs/_build/html/_modules/mindroot/lib/providers/model_preferences_v2.html +291 -0
  177. mindroot/docs/_build/html/_modules/mindroot/lib/providers/services.html +122 -0
  178. mindroot/docs/_build/html/_modules/mindroot/lib/providers.html +465 -0
  179. mindroot/docs/_build/html/_modules/mindroot/lib/route_decorators.html +175 -0
  180. mindroot/docs/_build/html/_modules/mindroot/lib/session_files.html +142 -0
  181. mindroot/docs/_build/html/_modules/mindroot/lib/streamcmd.html +246 -0
  182. mindroot/docs/_build/html/_modules/mindroot/lib/templates.html +677 -0
  183. mindroot/docs/_build/html/_modules/mindroot/lib/token_counter.html +326 -0
  184. mindroot/docs/_build/html/_modules/mindroot/migrate.html +153 -0
  185. mindroot/docs/_build/html/_modules/mindroot/registry/component_manager.html +140 -0
  186. mindroot/docs/_build/html/_modules/mindroot/registry/data_access.html +302 -0
  187. mindroot/docs/_build/html/_modules/mindroot/server.html +317 -0
  188. mindroot/docs/_build/html/_modules/mindroot/server_missing_normal_args.html +322 -0
  189. mindroot/docs/_build/html/_modules/mindroot/server_prev.html +298 -0
  190. mindroot/docs/_build/html/_sources/chat_with_assistant.rst.txt +14 -0
  191. mindroot/docs/_build/html/_sources/developer_documentation.rst.txt +26 -0
  192. mindroot/docs/_build/html/_sources/getting_started.rst.txt +139 -0
  193. mindroot/docs/_build/html/_sources/index.rst.txt +38 -0
  194. mindroot/docs/_build/html/_sources/install_plugins_with_tools.rst.txt +25 -0
  195. mindroot/docs/_build/html/_sources/installation.rst.txt +21 -0
  196. mindroot/docs/_build/html/_sources/llm_api_key.rst.txt +22 -0
  197. mindroot/docs/_build/html/_sources/llm_plugin_installation.rst.txt +27 -0
  198. mindroot/docs/_build/html/_sources/programming_task.rst.txt +10 -0
  199. mindroot/docs/_build/html/_sources/source/ahp.rst.txt +7 -0
  200. mindroot/docs/_build/html/_sources/source/mindroot.coreplugins.admin.rst.txt +189 -0
  201. mindroot/docs/_build/html/_sources/source/mindroot.coreplugins.api_keys.rst.txt +45 -0
  202. mindroot/docs/_build/html/_sources/source/mindroot.coreplugins.chat.rst.txt +93 -0
  203. mindroot/docs/_build/html/_sources/source/mindroot.coreplugins.chat_avatar.rst.txt +10 -0
  204. mindroot/docs/_build/html/_sources/source/mindroot.coreplugins.check_list.rst.txt +21 -0
  205. mindroot/docs/_build/html/_sources/source/mindroot.coreplugins.credits.rst.txt +61 -0
  206. mindroot/docs/_build/html/_sources/source/mindroot.coreplugins.email.rst.txt +77 -0
  207. mindroot/docs/_build/html/_sources/source/mindroot.coreplugins.env_manager.rst.txt +29 -0
  208. mindroot/docs/_build/html/_sources/source/mindroot.coreplugins.events.rst.txt +29 -0
  209. mindroot/docs/_build/html/_sources/source/mindroot.coreplugins.index.handlers.rst.txt +45 -0
  210. mindroot/docs/_build/html/_sources/source/mindroot.coreplugins.index.rst.txt +53 -0
  211. mindroot/docs/_build/html/_sources/source/mindroot.coreplugins.jwt_auth.rst.txt +45 -0
  212. mindroot/docs/_build/html/_sources/source/mindroot.coreplugins.l8n.rst.txt +109 -0
  213. mindroot/docs/_build/html/_sources/source/mindroot.coreplugins.mcp_.rst.txt +93 -0
  214. mindroot/docs/_build/html/_sources/source/mindroot.coreplugins.persona.rst.txt +29 -0
  215. mindroot/docs/_build/html/_sources/source/mindroot.coreplugins.rst.txt +35 -0
  216. mindroot/docs/_build/html/_sources/source/mindroot.coreplugins.startup.rst.txt +21 -0
  217. mindroot/docs/_build/html/_sources/source/mindroot.coreplugins.subscriptions.rst.txt +85 -0
  218. mindroot/docs/_build/html/_sources/source/mindroot.coreplugins.usage.rst.txt +61 -0
  219. mindroot/docs/_build/html/_sources/source/mindroot.coreplugins.user_service.rst.txt +69 -0
  220. mindroot/docs/_build/html/_sources/source/mindroot.lib.auth.rst.txt +29 -0
  221. mindroot/docs/_build/html/_sources/source/mindroot.lib.json_str_block.rst.txt +21 -0
  222. mindroot/docs/_build/html/_sources/source/mindroot.lib.plugins.rst.txt +69 -0
  223. mindroot/docs/_build/html/_sources/source/mindroot.lib.providers.backup.rst.txt +10 -0
  224. mindroot/docs/_build/html/_sources/source/mindroot.lib.providers.rst.txt +61 -0
  225. mindroot/docs/_build/html/_sources/source/mindroot.lib.rst.txt +152 -0
  226. mindroot/docs/_build/html/_sources/source/mindroot.registry.rst.txt +29 -0
  227. mindroot/docs/_build/html/_sources/source/mindroot.rst.txt +54 -0
  228. mindroot/docs/_build/html/_sources/source/modules.rst.txt +7 -0
  229. mindroot/docs/_build/html/_sources/source/mr_agent_expert_instr.rst.txt +7 -0
  230. mindroot/docs/_build/html/_sources/starting_mindroot.rst.txt +12 -0
  231. mindroot/docs/_build/html/_sources/user_documentation.rst.txt +16 -0
  232. mindroot/docs/_build/html/_static/_sphinx_javascript_frameworks_compat.js +123 -0
  233. mindroot/docs/_build/html/_static/basic.css +906 -0
  234. mindroot/docs/_build/html/_static/css/badge_only.css +1 -0
  235. mindroot/docs/_build/html/_static/css/fonts/Roboto-Slab-Bold.woff +0 -0
  236. mindroot/docs/_build/html/_static/css/fonts/Roboto-Slab-Bold.woff2 +0 -0
  237. mindroot/docs/_build/html/_static/css/fonts/Roboto-Slab-Regular.woff +0 -0
  238. mindroot/docs/_build/html/_static/css/fonts/Roboto-Slab-Regular.woff2 +0 -0
  239. mindroot/docs/_build/html/_static/css/fonts/fontawesome-webfont.eot +0 -0
  240. mindroot/docs/_build/html/_static/css/fonts/fontawesome-webfont.svg +2671 -0
  241. mindroot/docs/_build/html/_static/css/fonts/fontawesome-webfont.ttf +0 -0
  242. mindroot/docs/_build/html/_static/css/fonts/fontawesome-webfont.woff +0 -0
  243. mindroot/docs/_build/html/_static/css/fonts/fontawesome-webfont.woff2 +0 -0
  244. mindroot/docs/_build/html/_static/css/fonts/lato-bold-italic.woff +0 -0
  245. mindroot/docs/_build/html/_static/css/fonts/lato-bold-italic.woff2 +0 -0
  246. mindroot/docs/_build/html/_static/css/fonts/lato-bold.woff +0 -0
  247. mindroot/docs/_build/html/_static/css/fonts/lato-bold.woff2 +0 -0
  248. mindroot/docs/_build/html/_static/css/fonts/lato-normal-italic.woff +0 -0
  249. mindroot/docs/_build/html/_static/css/fonts/lato-normal-italic.woff2 +0 -0
  250. mindroot/docs/_build/html/_static/css/fonts/lato-normal.woff +0 -0
  251. mindroot/docs/_build/html/_static/css/fonts/lato-normal.woff2 +0 -0
  252. mindroot/docs/_build/html/_static/css/theme.css +4 -0
  253. mindroot/docs/_build/html/_static/custom.css +19 -0
  254. mindroot/docs/_build/html/_static/debug.css +69 -0
  255. mindroot/docs/_build/html/_static/doctools.js +149 -0
  256. mindroot/docs/_build/html/_static/documentation_options.js +13 -0
  257. mindroot/docs/_build/html/_static/file.png +0 -0
  258. mindroot/docs/_build/html/_static/fonts/Lato/lato-bold.eot +0 -0
  259. mindroot/docs/_build/html/_static/fonts/Lato/lato-bold.ttf +0 -0
  260. mindroot/docs/_build/html/_static/fonts/Lato/lato-bold.woff +0 -0
  261. mindroot/docs/_build/html/_static/fonts/Lato/lato-bold.woff2 +0 -0
  262. mindroot/docs/_build/html/_static/fonts/Lato/lato-bolditalic.eot +0 -0
  263. mindroot/docs/_build/html/_static/fonts/Lato/lato-bolditalic.ttf +0 -0
  264. mindroot/docs/_build/html/_static/fonts/Lato/lato-bolditalic.woff +0 -0
  265. mindroot/docs/_build/html/_static/fonts/Lato/lato-bolditalic.woff2 +0 -0
  266. mindroot/docs/_build/html/_static/fonts/Lato/lato-italic.eot +0 -0
  267. mindroot/docs/_build/html/_static/fonts/Lato/lato-italic.ttf +0 -0
  268. mindroot/docs/_build/html/_static/fonts/Lato/lato-italic.woff +0 -0
  269. mindroot/docs/_build/html/_static/fonts/Lato/lato-italic.woff2 +0 -0
  270. mindroot/docs/_build/html/_static/fonts/Lato/lato-regular.eot +0 -0
  271. mindroot/docs/_build/html/_static/fonts/Lato/lato-regular.ttf +0 -0
  272. mindroot/docs/_build/html/_static/fonts/Lato/lato-regular.woff +0 -0
  273. mindroot/docs/_build/html/_static/fonts/Lato/lato-regular.woff2 +0 -0
  274. mindroot/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.eot +0 -0
  275. mindroot/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.ttf +0 -0
  276. mindroot/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff +0 -0
  277. mindroot/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-bold.woff2 +0 -0
  278. mindroot/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.eot +0 -0
  279. mindroot/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.ttf +0 -0
  280. mindroot/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff +0 -0
  281. mindroot/docs/_build/html/_static/fonts/RobotoSlab/roboto-slab-v7-regular.woff2 +0 -0
  282. mindroot/docs/_build/html/_static/jquery.js +2 -0
  283. mindroot/docs/_build/html/_static/js/badge_only.js +1 -0
  284. mindroot/docs/_build/html/_static/js/theme.js +1 -0
  285. mindroot/docs/_build/html/_static/js/versions.js +228 -0
  286. mindroot/docs/_build/html/_static/language_data.js +192 -0
  287. mindroot/docs/_build/html/_static/minus.png +0 -0
  288. mindroot/docs/_build/html/_static/plus.png +0 -0
  289. mindroot/docs/_build/html/_static/pygments.css +232 -0
  290. mindroot/docs/_build/html/_static/scripts/furo-extensions.js +0 -0
  291. mindroot/docs/_build/html/_static/scripts/furo.js +3 -0
  292. mindroot/docs/_build/html/_static/scripts/furo.js.LICENSE.txt +7 -0
  293. mindroot/docs/_build/html/_static/scripts/furo.js.map +1 -0
  294. mindroot/docs/_build/html/_static/searchtools.js +635 -0
  295. mindroot/docs/_build/html/_static/skeleton.css +296 -0
  296. mindroot/docs/_build/html/_static/sphinx_highlight.js +154 -0
  297. mindroot/docs/_build/html/_static/styles/furo-extensions.css +2 -0
  298. mindroot/docs/_build/html/_static/styles/furo-extensions.css.map +1 -0
  299. mindroot/docs/_build/html/_static/styles/furo.css +2 -0
  300. mindroot/docs/_build/html/_static/styles/furo.css.map +1 -0
  301. mindroot/docs/_build/html/chat_with_assistant.html +329 -0
  302. mindroot/docs/_build/html/developer_documentation.html +338 -0
  303. mindroot/docs/_build/html/genindex.html +4690 -0
  304. mindroot/docs/_build/html/getting_started.html +423 -0
  305. mindroot/docs/_build/html/index.html +357 -0
  306. mindroot/docs/_build/html/install_plugins_with_tools.html +336 -0
  307. mindroot/docs/_build/html/installation.html +330 -0
  308. mindroot/docs/_build/html/llm_api_key.html +337 -0
  309. mindroot/docs/_build/html/llm_plugin_installation.html +338 -0
  310. mindroot/docs/_build/html/objects.inv +0 -0
  311. mindroot/docs/_build/html/programming_task.html +326 -0
  312. mindroot/docs/_build/html/py-modindex.html +1307 -0
  313. mindroot/docs/_build/html/search.html +307 -0
  314. mindroot/docs/_build/html/searchindex.js +1 -0
  315. mindroot/docs/_build/html/source/ahp.html +302 -0
  316. mindroot/docs/_build/html/source/mindroot.coreplugins.admin.html +2212 -0
  317. mindroot/docs/_build/html/source/mindroot.coreplugins.api_keys.html +532 -0
  318. mindroot/docs/_build/html/source/mindroot.coreplugins.chat.html +1185 -0
  319. mindroot/docs/_build/html/source/mindroot.coreplugins.chat_avatar.html +311 -0
  320. mindroot/docs/_build/html/source/mindroot.coreplugins.check_list.html +441 -0
  321. mindroot/docs/_build/html/source/mindroot.coreplugins.credits.html +879 -0
  322. mindroot/docs/_build/html/source/mindroot.coreplugins.email.html +554 -0
  323. mindroot/docs/_build/html/source/mindroot.coreplugins.env_manager.html +447 -0
  324. mindroot/docs/_build/html/source/mindroot.coreplugins.events.html +338 -0
  325. mindroot/docs/_build/html/source/mindroot.coreplugins.html +1785 -0
  326. mindroot/docs/_build/html/source/mindroot.coreplugins.index.handlers.html +481 -0
  327. mindroot/docs/_build/html/source/mindroot.coreplugins.index.html +696 -0
  328. mindroot/docs/_build/html/source/mindroot.coreplugins.jwt_auth.html +432 -0
  329. mindroot/docs/_build/html/source/mindroot.coreplugins.l8n.html +933 -0
  330. mindroot/docs/_build/html/source/mindroot.coreplugins.mcp_.html +1271 -0
  331. mindroot/docs/_build/html/source/mindroot.coreplugins.persona.html +386 -0
  332. mindroot/docs/_build/html/source/mindroot.coreplugins.startup.html +327 -0
  333. mindroot/docs/_build/html/source/mindroot.coreplugins.subscriptions.html +1631 -0
  334. mindroot/docs/_build/html/source/mindroot.coreplugins.usage.html +677 -0
  335. mindroot/docs/_build/html/source/mindroot.coreplugins.user_service.html +681 -0
  336. mindroot/docs/_build/html/source/mindroot.html +811 -0
  337. mindroot/docs/_build/html/source/mindroot.lib.auth.html +407 -0
  338. mindroot/docs/_build/html/source/mindroot.lib.html +2027 -0
  339. mindroot/docs/_build/html/source/mindroot.lib.json_str_block.html +344 -0
  340. mindroot/docs/_build/html/source/mindroot.lib.plugins.html +1050 -0
  341. mindroot/docs/_build/html/source/mindroot.lib.providers.backup.html +324 -0
  342. mindroot/docs/_build/html/source/mindroot.lib.providers.html +572 -0
  343. mindroot/docs/_build/html/source/mindroot.registry.html +501 -0
  344. mindroot/docs/_build/html/source/modules.html +377 -0
  345. mindroot/docs/_build/html/source/mr_agent_expert_instr.html +302 -0
  346. mindroot/docs/_build/html/starting_mindroot.html +325 -0
  347. mindroot/docs/_build/html/user_documentation.html +333 -0
  348. mindroot/docs/_static/custom.css +19 -0
  349. mindroot/docs/chat_with_assistant.rst +14 -0
  350. mindroot/docs/conf.py +54 -0
  351. mindroot/docs/data/agents/local/Assistant/agent.json +27 -0
  352. mindroot/docs/data/agents/local/SysAdmin/agent.json +33 -0
  353. mindroot/docs/data/equivalent_flags.json +1 -0
  354. mindroot/docs/data/mcp/servers.json +9 -0
  355. mindroot/docs/data/models.json +57 -0
  356. mindroot/docs/data/plugin_manifest.json +95 -0
  357. mindroot/docs/data/preferred_models.json +12 -0
  358. mindroot/docs/data/providers.json +62 -0
  359. mindroot/docs/developer_documentation.rst +26 -0
  360. mindroot/docs/envvar.png +0 -0
  361. mindroot/docs/files.png +0 -0
  362. mindroot/docs/getting_started.rst +139 -0
  363. mindroot/docs/index.rst +38 -0
  364. mindroot/docs/install_plugins_with_tools.rst +25 -0
  365. mindroot/docs/installation.rst +21 -0
  366. mindroot/docs/installopenrouter.png +0 -0
  367. mindroot/docs/llm_api_key.rst +22 -0
  368. mindroot/docs/llm_plugin_installation.rst +27 -0
  369. mindroot/docs/make.bat +35 -0
  370. mindroot/docs/mood.png +0 -0
  371. mindroot/docs/moon.png +0 -0
  372. mindroot/docs/openrouter.png +0 -0
  373. mindroot/docs/personas/local/Assistant/avatar.png +0 -0
  374. mindroot/docs/personas/local/Assistant/faceref.png +0 -0
  375. mindroot/docs/personas/local/Assistant/persona.json +7 -0
  376. mindroot/docs/programming_task.rst +10 -0
  377. mindroot/docs/restart.png +0 -0
  378. mindroot/docs/source/ahp.rst +7 -0
  379. mindroot/docs/source/mindroot.coreplugins.admin.rst +189 -0
  380. mindroot/docs/source/mindroot.coreplugins.api_keys.rst +45 -0
  381. mindroot/docs/source/mindroot.coreplugins.chat.rst +93 -0
  382. mindroot/docs/source/mindroot.coreplugins.chat_avatar.rst +10 -0
  383. mindroot/docs/source/mindroot.coreplugins.check_list.rst +21 -0
  384. mindroot/docs/source/mindroot.coreplugins.credits.rst +61 -0
  385. mindroot/docs/source/mindroot.coreplugins.email.rst +77 -0
  386. mindroot/docs/source/mindroot.coreplugins.env_manager.rst +29 -0
  387. mindroot/docs/source/mindroot.coreplugins.events.rst +29 -0
  388. mindroot/docs/source/mindroot.coreplugins.index.handlers.rst +45 -0
  389. mindroot/docs/source/mindroot.coreplugins.index.rst +53 -0
  390. mindroot/docs/source/mindroot.coreplugins.jwt_auth.rst +45 -0
  391. mindroot/docs/source/mindroot.coreplugins.l8n.rst +109 -0
  392. mindroot/docs/source/mindroot.coreplugins.mcp_.rst +93 -0
  393. mindroot/docs/source/mindroot.coreplugins.persona.rst +29 -0
  394. mindroot/docs/source/mindroot.coreplugins.rst +35 -0
  395. mindroot/docs/source/mindroot.coreplugins.startup.rst +21 -0
  396. mindroot/docs/source/mindroot.coreplugins.subscriptions.rst +85 -0
  397. mindroot/docs/source/mindroot.coreplugins.usage.rst +61 -0
  398. mindroot/docs/source/mindroot.coreplugins.user_service.rst +69 -0
  399. mindroot/docs/source/mindroot.lib.auth.rst +29 -0
  400. mindroot/docs/source/mindroot.lib.json_str_block.rst +21 -0
  401. mindroot/docs/source/mindroot.lib.plugins.rst +69 -0
  402. mindroot/docs/source/mindroot.lib.providers.backup.rst +10 -0
  403. mindroot/docs/source/mindroot.lib.providers.rst +61 -0
  404. mindroot/docs/source/mindroot.lib.rst +152 -0
  405. mindroot/docs/source/mindroot.registry.rst +29 -0
  406. mindroot/docs/source/mindroot.rst +54 -0
  407. mindroot/docs/source/modules.rst +7 -0
  408. mindroot/docs/source/mr_agent_expert_instr.rst +7 -0
  409. mindroot/docs/starting_mindroot.rst +12 -0
  410. mindroot/docs/user_documentation.rst +16 -0
  411. mindroot/lib/plugins/default_plugin_manifest.json +1 -1
  412. mindroot/server.py +10 -1
  413. {mindroot-9.10.0.dist-info → mindroot-9.12.0.dist-info}/METADATA +1 -1
  414. {mindroot-9.10.0.dist-info → mindroot-9.12.0.dist-info}/RECORD +418 -10
  415. {mindroot-9.10.0.dist-info → mindroot-9.12.0.dist-info}/WHEEL +0 -0
  416. {mindroot-9.10.0.dist-info → mindroot-9.12.0.dist-info}/entry_points.txt +0 -0
  417. {mindroot-9.10.0.dist-info → mindroot-9.12.0.dist-info}/licenses/LICENSE +0 -0
  418. {mindroot-9.10.0.dist-info → mindroot-9.12.0.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,408 @@
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.coreplugins.l8n.test_enhanced &mdash; 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.coreplugins.l8n.test_enhanced</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.coreplugins.l8n.test_enhanced</h1><div class="highlight"><pre>
69
+ <span></span><span class="ch">#!/usr/bin/env python3</span>
70
+ <span class="sd">&quot;&quot;&quot;</span>
71
+ <span class="sd">Enhanced test script for the l8n localization plugin with language detection.</span>
72
+ <span class="sd">&quot;&quot;&quot;</span>
73
+
74
+ <span class="kn">import</span><span class="w"> </span><span class="nn">asyncio</span>
75
+ <span class="kn">import</span><span class="w"> </span><span class="nn">os</span>
76
+ <span class="kn">import</span><span class="w"> </span><span class="nn">sys</span>
77
+ <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>
78
+
79
+ <span class="c1"># Add the current directory to Python path for imports</span>
80
+ <span class="n">sys</span><span class="o">.</span><span class="n">path</span><span class="o">.</span><span class="n">insert</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span> <span class="nb">str</span><span class="p">(</span><span class="n">Path</span><span class="p">(</span><span class="vm">__file__</span><span class="p">)</span><span class="o">.</span><span class="n">parent</span><span class="p">))</span>
81
+
82
+ <span class="kn">from</span><span class="w"> </span><span class="nn">test_l8n_standalone</span><span class="w"> </span><span class="kn">import</span> <span class="p">(</span>
83
+ <span class="n">write_localized_file</span><span class="p">,</span>
84
+ <span class="n">set_translations</span><span class="p">,</span>
85
+ <span class="n">replace_placeholders</span><span class="p">,</span>
86
+ <span class="n">TRANSLATIONS</span>
87
+ <span class="p">)</span>
88
+
89
+ <span class="kn">from</span><span class="w"> </span><span class="nn">language_detection</span><span class="w"> </span><span class="kn">import</span> <span class="p">(</span>
90
+ <span class="n">get_current_language_from_request</span><span class="p">,</span>
91
+ <span class="n">get_fallback_language</span><span class="p">,</span>
92
+ <span class="n">set_language_for_request</span><span class="p">,</span>
93
+ <span class="n">get_supported_languages</span><span class="p">,</span>
94
+ <span class="n">is_language_supported</span><span class="p">,</span>
95
+ <span class="n">_parse_accept_language_header</span>
96
+ <span class="p">)</span>
97
+
98
+ <div class="viewcode-block" id="test_language_detection">
99
+ <a class="viewcode-back" href="../../../../source/mindroot.coreplugins.l8n.html#mindroot.coreplugins.l8n.test_enhanced.test_language_detection">[docs]</a>
100
+ <span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">test_language_detection</span><span class="p">():</span>
101
+ <span class="w"> </span><span class="sd">&quot;&quot;&quot;Test the enhanced language detection functionality.&quot;&quot;&quot;</span>
102
+ <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;Testing Enhanced Language Detection...</span><span class="se">\n</span><span class="s2">&quot;</span><span class="p">)</span>
103
+
104
+ <span class="c1"># Test 1: Default language detection</span>
105
+ <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;1. Testing default language detection...&quot;</span><span class="p">)</span>
106
+ <span class="n">default_lang</span> <span class="o">=</span> <span class="n">get_current_language_from_request</span><span class="p">()</span>
107
+ <span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot; Default language: </span><span class="si">{</span><span class="n">default_lang</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
108
+
109
+ <span class="c1"># Test 2: Environment variable override</span>
110
+ <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;</span><span class="se">\n</span><span class="s2">2. Testing environment variable override...&quot;</span><span class="p">)</span>
111
+ <span class="n">os</span><span class="o">.</span><span class="n">environ</span><span class="p">[</span><span class="s1">&#39;MINDROOT_LANGUAGE&#39;</span><span class="p">]</span> <span class="o">=</span> <span class="s1">&#39;es&#39;</span>
112
+ <span class="n">env_lang</span> <span class="o">=</span> <span class="n">get_current_language_from_request</span><span class="p">()</span>
113
+ <span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot; Language with MINDROOT_LANGUAGE=es: </span><span class="si">{</span><span class="n">env_lang</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
114
+
115
+ <span class="c1"># Test 3: Language fallback system</span>
116
+ <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;</span><span class="se">\n</span><span class="s2">3. Testing language fallback system...&quot;</span><span class="p">)</span>
117
+ <span class="n">supported</span> <span class="o">=</span> <span class="n">get_supported_languages</span><span class="p">()</span>
118
+ <span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot; Supported languages: </span><span class="si">{</span><span class="n">supported</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
119
+
120
+ <span class="n">test_languages</span> <span class="o">=</span> <span class="p">[</span><span class="s1">&#39;es&#39;</span><span class="p">,</span> <span class="s1">&#39;fr&#39;</span><span class="p">,</span> <span class="s1">&#39;de&#39;</span><span class="p">,</span> <span class="s1">&#39;zh-cn&#39;</span><span class="p">,</span> <span class="s1">&#39;pt-br&#39;</span><span class="p">,</span> <span class="s1">&#39;invalid-lang&#39;</span><span class="p">]</span>
121
+ <span class="k">for</span> <span class="n">lang</span> <span class="ow">in</span> <span class="n">test_languages</span><span class="p">:</span>
122
+ <span class="n">fallback</span> <span class="o">=</span> <span class="n">get_fallback_language</span><span class="p">(</span><span class="n">lang</span><span class="p">)</span>
123
+ <span class="n">supported_check</span> <span class="o">=</span> <span class="n">is_language_supported</span><span class="p">(</span><span class="n">lang</span><span class="p">)</span>
124
+ <span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot; </span><span class="si">{</span><span class="n">lang</span><span class="si">}</span><span class="s2"> -&gt; </span><span class="si">{</span><span class="n">fallback</span><span class="si">}</span><span class="s2"> (supported: </span><span class="si">{</span><span class="n">supported_check</span><span class="si">}</span><span class="s2">)&quot;</span><span class="p">)</span>
125
+
126
+ <span class="c1"># Test 4: Accept-Language header parsing</span>
127
+ <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;</span><span class="se">\n</span><span class="s2">4. Testing Accept-Language header parsing...&quot;</span><span class="p">)</span>
128
+ <span class="n">test_headers</span> <span class="o">=</span> <span class="p">[</span>
129
+ <span class="s1">&#39;en-US,en;q=0.9,es;q=0.8,fr;q=0.7&#39;</span><span class="p">,</span>
130
+ <span class="s1">&#39;es-ES,es;q=0.9,en;q=0.8&#39;</span><span class="p">,</span>
131
+ <span class="s1">&#39;fr-FR,fr;q=0.9&#39;</span><span class="p">,</span>
132
+ <span class="s1">&#39;de-DE,de;q=0.8,en;q=0.5&#39;</span><span class="p">,</span>
133
+ <span class="s1">&#39;zh-CN,zh;q=0.9,en;q=0.1&#39;</span>
134
+ <span class="p">]</span>
135
+
136
+ <span class="k">for</span> <span class="n">header</span> <span class="ow">in</span> <span class="n">test_headers</span><span class="p">:</span>
137
+ <span class="n">parsed</span> <span class="o">=</span> <span class="n">_parse_accept_language_header</span><span class="p">(</span><span class="n">header</span><span class="p">)</span>
138
+ <span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot; &#39;</span><span class="si">{</span><span class="n">header</span><span class="si">}</span><span class="s2">&#39; -&gt; </span><span class="si">{</span><span class="n">parsed</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
139
+
140
+ <span class="c1"># Test 5: Set language for request</span>
141
+ <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;</span><span class="se">\n</span><span class="s2">5. Testing set_language_for_request...&quot;</span><span class="p">)</span>
142
+ <span class="n">set_language_for_request</span><span class="p">(</span><span class="s1">&#39;fr&#39;</span><span class="p">)</span>
143
+ <span class="n">current_lang</span> <span class="o">=</span> <span class="n">get_current_language_from_request</span><span class="p">()</span>
144
+ <span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot; After setting to &#39;fr&#39;: </span><span class="si">{</span><span class="n">current_lang</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
145
+
146
+ <span class="c1"># Reset for next tests</span>
147
+ <span class="n">os</span><span class="o">.</span><span class="n">environ</span><span class="o">.</span><span class="n">pop</span><span class="p">(</span><span class="s1">&#39;MINDROOT_LANGUAGE&#39;</span><span class="p">,</span> <span class="kc">None</span><span class="p">)</span>
148
+
149
+ <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;</span><span class="se">\n</span><span class="s2">✅ Language detection tests completed!&quot;</span><span class="p">)</span></div>
150
+
151
+
152
+ <div class="viewcode-block" id="test_integrated_translation">
153
+ <a class="viewcode-back" href="../../../../source/mindroot.coreplugins.l8n.html#mindroot.coreplugins.l8n.test_enhanced.test_integrated_translation">[docs]</a>
154
+ <span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">test_integrated_translation</span><span class="p">():</span>
155
+ <span class="w"> </span><span class="sd">&quot;&quot;&quot;Test the integrated translation system with language detection.&quot;&quot;&quot;</span>
156
+ <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;</span><span class="se">\n</span><span class="s2">Testing Integrated Translation System...</span><span class="se">\n</span><span class="s2">&quot;</span><span class="p">)</span>
157
+
158
+ <span class="c1"># Set up translations for multiple languages</span>
159
+ <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;1. Setting up translations...&quot;</span><span class="p">)</span>
160
+
161
+ <span class="c1"># English (default)</span>
162
+ <span class="k">await</span> <span class="n">set_translations</span><span class="p">(</span><span class="s1">&#39;en&#39;</span><span class="p">,</span> <span class="p">{</span>
163
+ <span class="s1">&#39;welcome_title&#39;</span><span class="p">:</span> <span class="s1">&#39;Welcome to MindRoot&#39;</span><span class="p">,</span>
164
+ <span class="s1">&#39;nav_home&#39;</span><span class="p">:</span> <span class="s1">&#39;Home&#39;</span><span class="p">,</span>
165
+ <span class="s1">&#39;nav_settings&#39;</span><span class="p">:</span> <span class="s1">&#39;Settings&#39;</span><span class="p">,</span>
166
+ <span class="s1">&#39;button_save&#39;</span><span class="p">:</span> <span class="s1">&#39;Save&#39;</span><span class="p">,</span>
167
+ <span class="s1">&#39;button_cancel&#39;</span><span class="p">:</span> <span class="s1">&#39;Cancel&#39;</span>
168
+ <span class="p">})</span>
169
+
170
+ <span class="c1"># Spanish</span>
171
+ <span class="k">await</span> <span class="n">set_translations</span><span class="p">(</span><span class="s1">&#39;es&#39;</span><span class="p">,</span> <span class="p">{</span>
172
+ <span class="s1">&#39;welcome_title&#39;</span><span class="p">:</span> <span class="s1">&#39;Bienvenido a MindRoot&#39;</span><span class="p">,</span>
173
+ <span class="s1">&#39;nav_home&#39;</span><span class="p">:</span> <span class="s1">&#39;Inicio&#39;</span><span class="p">,</span>
174
+ <span class="s1">&#39;nav_settings&#39;</span><span class="p">:</span> <span class="s1">&#39;Configuración&#39;</span><span class="p">,</span>
175
+ <span class="s1">&#39;button_save&#39;</span><span class="p">:</span> <span class="s1">&#39;Guardar&#39;</span><span class="p">,</span>
176
+ <span class="s1">&#39;button_cancel&#39;</span><span class="p">:</span> <span class="s1">&#39;Cancelar&#39;</span>
177
+ <span class="p">})</span>
178
+
179
+ <span class="c1"># French</span>
180
+ <span class="k">await</span> <span class="n">set_translations</span><span class="p">(</span><span class="s1">&#39;fr&#39;</span><span class="p">,</span> <span class="p">{</span>
181
+ <span class="s1">&#39;welcome_title&#39;</span><span class="p">:</span> <span class="s1">&#39;Bienvenue à MindRoot&#39;</span><span class="p">,</span>
182
+ <span class="s1">&#39;nav_home&#39;</span><span class="p">:</span> <span class="s1">&#39;Accueil&#39;</span><span class="p">,</span>
183
+ <span class="s1">&#39;nav_settings&#39;</span><span class="p">:</span> <span class="s1">&#39;Paramètres&#39;</span><span class="p">,</span>
184
+ <span class="s1">&#39;button_save&#39;</span><span class="p">:</span> <span class="s1">&#39;Enregistrer&#39;</span><span class="p">,</span>
185
+ <span class="s1">&#39;button_cancel&#39;</span><span class="p">:</span> <span class="s1">&#39;Annuler&#39;</span>
186
+ <span class="p">})</span>
187
+
188
+ <span class="c1"># German</span>
189
+ <span class="k">await</span> <span class="n">set_translations</span><span class="p">(</span><span class="s1">&#39;de&#39;</span><span class="p">,</span> <span class="p">{</span>
190
+ <span class="s1">&#39;welcome_title&#39;</span><span class="p">:</span> <span class="s1">&#39;Willkommen bei MindRoot&#39;</span><span class="p">,</span>
191
+ <span class="s1">&#39;nav_home&#39;</span><span class="p">:</span> <span class="s1">&#39;Startseite&#39;</span><span class="p">,</span>
192
+ <span class="s1">&#39;nav_settings&#39;</span><span class="p">:</span> <span class="s1">&#39;Einstellungen&#39;</span><span class="p">,</span>
193
+ <span class="s1">&#39;button_save&#39;</span><span class="p">:</span> <span class="s1">&#39;Speichern&#39;</span><span class="p">,</span>
194
+ <span class="s1">&#39;button_cancel&#39;</span><span class="p">:</span> <span class="s1">&#39;Abbrechen&#39;</span>
195
+ <span class="p">})</span>
196
+
197
+ <span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot; Set up translations for </span><span class="si">{</span><span class="nb">len</span><span class="p">(</span><span class="n">TRANSLATIONS</span><span class="p">)</span><span class="si">}</span><span class="s2"> languages&quot;</span><span class="p">)</span>
198
+
199
+ <span class="c1"># Test template with placeholders</span>
200
+ <span class="n">template_content</span> <span class="o">=</span> <span class="s2">&quot;&quot;&quot;</span>
201
+ <span class="s2">&lt;html&gt;</span>
202
+ <span class="s2">&lt;head&gt;</span>
203
+ <span class="s2"> &lt;title&gt;__TRANSLATE_welcome_title__&lt;/title&gt;</span>
204
+ <span class="s2">&lt;/head&gt;</span>
205
+ <span class="s2">&lt;body&gt;</span>
206
+ <span class="s2"> &lt;nav&gt;</span>
207
+ <span class="s2"> &lt;a href=&quot;/&quot;&gt;__TRANSLATE_nav_home__&lt;/a&gt;</span>
208
+ <span class="s2"> &lt;a href=&quot;/settings&quot;&gt;__TRANSLATE_nav_settings__&lt;/a&gt;</span>
209
+ <span class="s2"> &lt;/nav&gt;</span>
210
+ <span class="s2"> &lt;main&gt;</span>
211
+ <span class="s2"> &lt;h1&gt;__TRANSLATE_welcome_title__&lt;/h1&gt;</span>
212
+ <span class="s2"> &lt;div class=&quot;actions&quot;&gt;</span>
213
+ <span class="s2"> &lt;button&gt;__TRANSLATE_button_save__&lt;/button&gt;</span>
214
+ <span class="s2"> &lt;button&gt;__TRANSLATE_button_cancel__&lt;/button&gt;</span>
215
+ <span class="s2"> &lt;/div&gt;</span>
216
+ <span class="s2"> &lt;/main&gt;</span>
217
+ <span class="s2">&lt;/body&gt;</span>
218
+ <span class="s2">&lt;/html&gt;</span>
219
+ <span class="s2">&quot;&quot;&quot;</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span>
220
+
221
+ <span class="c1"># Test translation for each language</span>
222
+ <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;</span><span class="se">\n</span><span class="s2">2. Testing translation for each language...&quot;</span><span class="p">)</span>
223
+
224
+ <span class="n">test_languages</span> <span class="o">=</span> <span class="p">[</span><span class="s1">&#39;en&#39;</span><span class="p">,</span> <span class="s1">&#39;es&#39;</span><span class="p">,</span> <span class="s1">&#39;fr&#39;</span><span class="p">,</span> <span class="s1">&#39;de&#39;</span><span class="p">,</span> <span class="s1">&#39;pt&#39;</span><span class="p">]</span> <span class="c1"># pt should fallback to en</span>
225
+
226
+ <span class="k">for</span> <span class="n">lang</span> <span class="ow">in</span> <span class="n">test_languages</span><span class="p">:</span>
227
+ <span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;</span><span class="se">\n</span><span class="s2"> Language: </span><span class="si">{</span><span class="n">lang</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
228
+
229
+ <span class="c1"># Set the language</span>
230
+ <span class="n">set_language_for_request</span><span class="p">(</span><span class="n">lang</span><span class="p">)</span>
231
+
232
+ <span class="c1"># Get the fallback language</span>
233
+ <span class="n">fallback_lang</span> <span class="o">=</span> <span class="n">get_fallback_language</span><span class="p">(</span><span class="n">lang</span><span class="p">)</span>
234
+ <span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot; Fallback: </span><span class="si">{</span><span class="n">fallback_lang</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
235
+
236
+ <span class="c1"># Translate the template</span>
237
+ <span class="n">translated</span> <span class="o">=</span> <span class="n">replace_placeholders</span><span class="p">(</span><span class="n">template_content</span><span class="p">,</span> <span class="n">fallback_lang</span><span class="p">)</span>
238
+
239
+ <span class="c1"># Show a snippet of the translation</span>
240
+ <span class="n">title_line</span> <span class="o">=</span> <span class="p">[</span><span class="n">line</span> <span class="k">for</span> <span class="n">line</span> <span class="ow">in</span> <span class="n">translated</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">&#39;</span><span class="p">)</span> <span class="k">if</span> <span class="s1">&#39;&lt;title&gt;&#39;</span> <span class="ow">in</span> <span class="n">line</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span>
241
+ <span class="n">h1_line</span> <span class="o">=</span> <span class="p">[</span><span class="n">line</span> <span class="k">for</span> <span class="n">line</span> <span class="ow">in</span> <span class="n">translated</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">&#39;</span><span class="p">)</span> <span class="k">if</span> <span class="s1">&#39;&lt;h1&gt;&#39;</span> <span class="ow">in</span> <span class="n">line</span><span class="p">][</span><span class="mi">0</span><span class="p">]</span>
242
+
243
+ <span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot; Title: </span><span class="si">{</span><span class="n">title_line</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
244
+ <span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot; H1: </span><span class="si">{</span><span class="n">h1_line</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
245
+
246
+ <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;</span><span class="se">\n</span><span class="s2">✅ Integrated translation tests completed!&quot;</span><span class="p">)</span></div>
247
+
248
+
249
+ <div class="viewcode-block" id="test_file_integration">
250
+ <a class="viewcode-back" href="../../../../source/mindroot.coreplugins.l8n.html#mindroot.coreplugins.l8n.test_enhanced.test_file_integration">[docs]</a>
251
+ <span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">test_file_integration</span><span class="p">():</span>
252
+ <span class="w"> </span><span class="sd">&quot;&quot;&quot;Test creating localized files and using language detection.&quot;&quot;&quot;</span>
253
+ <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;</span><span class="se">\n</span><span class="s2">Testing File Integration...</span><span class="se">\n</span><span class="s2">&quot;</span><span class="p">)</span>
254
+
255
+ <span class="c1"># Create a localized template file</span>
256
+ <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;1. Creating localized template file...&quot;</span><span class="p">)</span>
257
+
258
+ <span class="n">template_path</span> <span class="o">=</span> <span class="s2">&quot;/files/mindroot/src/mindroot/coreplugins/admin/templates/admin.jinja2&quot;</span>
259
+ <span class="n">template_content</span> <span class="o">=</span> <span class="s2">&quot;&quot;&quot;</span>
260
+ <span class="s2">&lt;!DOCTYPE html&gt;</span>
261
+ <span class="s2">&lt;html&gt;</span>
262
+ <span class="s2">&lt;head&gt;</span>
263
+ <span class="s2"> &lt;title&gt;__TRANSLATE_admin_title__&lt;/title&gt;</span>
264
+ <span class="s2">&lt;/head&gt;</span>
265
+ <span class="s2">&lt;body&gt;</span>
266
+ <span class="s2"> &lt;header&gt;</span>
267
+ <span class="s2"> &lt;h1&gt;__TRANSLATE_admin_header__&lt;/h1&gt;</span>
268
+ <span class="s2"> &lt;nav&gt;</span>
269
+ <span class="s2"> &lt;a href=&quot;/admin/users&quot;&gt;__TRANSLATE_nav_users__&lt;/a&gt;</span>
270
+ <span class="s2"> &lt;a href=&quot;/admin/settings&quot;&gt;__TRANSLATE_nav_settings__&lt;/a&gt;</span>
271
+ <span class="s2"> &lt;a href=&quot;/admin/logs&quot;&gt;__TRANSLATE_nav_logs__&lt;/a&gt;</span>
272
+ <span class="s2"> &lt;/nav&gt;</span>
273
+ <span class="s2"> &lt;/header&gt;</span>
274
+ <span class="s2"> &lt;main&gt;</span>
275
+ <span class="s2"> &lt;section&gt;</span>
276
+ <span class="s2"> &lt;h2&gt;__TRANSLATE_section_overview__&lt;/h2&gt;</span>
277
+ <span class="s2"> &lt;p&gt;__TRANSLATE_overview_description__&lt;/p&gt;</span>
278
+ <span class="s2"> &lt;/section&gt;</span>
279
+ <span class="s2"> &lt;div class=&quot;actions&quot;&gt;</span>
280
+ <span class="s2"> &lt;button class=&quot;primary&quot;&gt;__TRANSLATE_button_create__&lt;/button&gt;</span>
281
+ <span class="s2"> &lt;button class=&quot;secondary&quot;&gt;__TRANSLATE_button_refresh__&lt;/button&gt;</span>
282
+ <span class="s2"> &lt;/div&gt;</span>
283
+ <span class="s2"> &lt;/main&gt;</span>
284
+ <span class="s2">&lt;/body&gt;</span>
285
+ <span class="s2">&lt;/html&gt;</span>
286
+ <span class="s2">&quot;&quot;&quot;</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span>
287
+
288
+ <span class="n">result</span> <span class="o">=</span> <span class="k">await</span> <span class="n">write_localized_file</span><span class="p">(</span><span class="n">template_path</span><span class="p">,</span> <span class="n">template_content</span><span class="p">)</span>
289
+ <span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot; </span><span class="si">{</span><span class="n">result</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
290
+
291
+ <span class="c1"># Set up admin-specific translations</span>
292
+ <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;</span><span class="se">\n</span><span class="s2">2. Setting up admin translations...&quot;</span><span class="p">)</span>
293
+
294
+ <span class="n">admin_translations</span> <span class="o">=</span> <span class="p">{</span>
295
+ <span class="s1">&#39;en&#39;</span><span class="p">:</span> <span class="p">{</span>
296
+ <span class="s1">&#39;admin_title&#39;</span><span class="p">:</span> <span class="s1">&#39;MindRoot Administration&#39;</span><span class="p">,</span>
297
+ <span class="s1">&#39;admin_header&#39;</span><span class="p">:</span> <span class="s1">&#39;Admin Dashboard&#39;</span><span class="p">,</span>
298
+ <span class="s1">&#39;nav_users&#39;</span><span class="p">:</span> <span class="s1">&#39;Users&#39;</span><span class="p">,</span>
299
+ <span class="s1">&#39;nav_settings&#39;</span><span class="p">:</span> <span class="s1">&#39;Settings&#39;</span><span class="p">,</span>
300
+ <span class="s1">&#39;nav_logs&#39;</span><span class="p">:</span> <span class="s1">&#39;Logs&#39;</span><span class="p">,</span>
301
+ <span class="s1">&#39;section_overview&#39;</span><span class="p">:</span> <span class="s1">&#39;System Overview&#39;</span><span class="p">,</span>
302
+ <span class="s1">&#39;overview_description&#39;</span><span class="p">:</span> <span class="s1">&#39;Manage your MindRoot installation from this dashboard.&#39;</span><span class="p">,</span>
303
+ <span class="s1">&#39;button_create&#39;</span><span class="p">:</span> <span class="s1">&#39;Create New&#39;</span><span class="p">,</span>
304
+ <span class="s1">&#39;button_refresh&#39;</span><span class="p">:</span> <span class="s1">&#39;Refresh Data&#39;</span>
305
+ <span class="p">},</span>
306
+ <span class="s1">&#39;es&#39;</span><span class="p">:</span> <span class="p">{</span>
307
+ <span class="s1">&#39;admin_title&#39;</span><span class="p">:</span> <span class="s1">&#39;Administración de MindRoot&#39;</span><span class="p">,</span>
308
+ <span class="s1">&#39;admin_header&#39;</span><span class="p">:</span> <span class="s1">&#39;Panel de Administración&#39;</span><span class="p">,</span>
309
+ <span class="s1">&#39;nav_users&#39;</span><span class="p">:</span> <span class="s1">&#39;Usuarios&#39;</span><span class="p">,</span>
310
+ <span class="s1">&#39;nav_settings&#39;</span><span class="p">:</span> <span class="s1">&#39;Configuración&#39;</span><span class="p">,</span>
311
+ <span class="s1">&#39;nav_logs&#39;</span><span class="p">:</span> <span class="s1">&#39;Registros&#39;</span><span class="p">,</span>
312
+ <span class="s1">&#39;section_overview&#39;</span><span class="p">:</span> <span class="s1">&#39;Resumen del Sistema&#39;</span><span class="p">,</span>
313
+ <span class="s1">&#39;overview_description&#39;</span><span class="p">:</span> <span class="s1">&#39;Gestiona tu instalación de MindRoot desde este panel.&#39;</span><span class="p">,</span>
314
+ <span class="s1">&#39;button_create&#39;</span><span class="p">:</span> <span class="s1">&#39;Crear Nuevo&#39;</span><span class="p">,</span>
315
+ <span class="s1">&#39;button_refresh&#39;</span><span class="p">:</span> <span class="s1">&#39;Actualizar Datos&#39;</span>
316
+ <span class="p">},</span>
317
+ <span class="s1">&#39;fr&#39;</span><span class="p">:</span> <span class="p">{</span>
318
+ <span class="s1">&#39;admin_title&#39;</span><span class="p">:</span> <span class="s1">&#39;Administration MindRoot&#39;</span><span class="p">,</span>
319
+ <span class="s1">&#39;admin_header&#39;</span><span class="p">:</span> <span class="s1">&#39;Tableau de Bord Admin&#39;</span><span class="p">,</span>
320
+ <span class="s1">&#39;nav_users&#39;</span><span class="p">:</span> <span class="s1">&#39;Utilisateurs&#39;</span><span class="p">,</span>
321
+ <span class="s1">&#39;nav_settings&#39;</span><span class="p">:</span> <span class="s1">&#39;Paramètres&#39;</span><span class="p">,</span>
322
+ <span class="s1">&#39;nav_logs&#39;</span><span class="p">:</span> <span class="s1">&#39;Journaux&#39;</span><span class="p">,</span>
323
+ <span class="s1">&#39;section_overview&#39;</span><span class="p">:</span> <span class="s1">&#39;Aperçu du Système&#39;</span><span class="p">,</span>
324
+ <span class="s1">&#39;overview_description&#39;</span><span class="p">:</span> <span class="s1">&#39;Gérez votre installation MindRoot depuis ce tableau de bord.&#39;</span><span class="p">,</span>
325
+ <span class="s1">&#39;button_create&#39;</span><span class="p">:</span> <span class="s1">&#39;Créer Nouveau&#39;</span><span class="p">,</span>
326
+ <span class="s1">&#39;button_refresh&#39;</span><span class="p">:</span> <span class="s1">&#39;Actualiser les Données&#39;</span>
327
+ <span class="p">}</span>
328
+ <span class="p">}</span>
329
+
330
+ <span class="k">for</span> <span class="n">lang</span><span class="p">,</span> <span class="n">translations</span> <span class="ow">in</span> <span class="n">admin_translations</span><span class="o">.</span><span class="n">items</span><span class="p">():</span>
331
+ <span class="n">result</span> <span class="o">=</span> <span class="k">await</span> <span class="n">set_translations</span><span class="p">(</span><span class="n">lang</span><span class="p">,</span> <span class="n">translations</span><span class="p">)</span>
332
+ <span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot; </span><span class="si">{</span><span class="n">result</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
333
+
334
+ <span class="c1"># Test the complete workflow</span>
335
+ <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;</span><span class="se">\n</span><span class="s2">3. Testing complete localization workflow...&quot;</span><span class="p">)</span>
336
+
337
+ <span class="k">for</span> <span class="n">lang</span> <span class="ow">in</span> <span class="p">[</span><span class="s1">&#39;en&#39;</span><span class="p">,</span> <span class="s1">&#39;es&#39;</span><span class="p">,</span> <span class="s1">&#39;fr&#39;</span><span class="p">]:</span>
338
+ <span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot;</span><span class="se">\n</span><span class="s2"> Testing </span><span class="si">{</span><span class="n">lang</span><span class="o">.</span><span class="n">upper</span><span class="p">()</span><span class="si">}</span><span class="s2"> localization:&quot;</span><span class="p">)</span>
339
+
340
+ <span class="c1"># Set language</span>
341
+ <span class="n">set_language_for_request</span><span class="p">(</span><span class="n">lang</span><span class="p">)</span>
342
+ <span class="n">current</span> <span class="o">=</span> <span class="n">get_current_language_from_request</span><span class="p">()</span>
343
+ <span class="n">fallback</span> <span class="o">=</span> <span class="n">get_fallback_language</span><span class="p">(</span><span class="n">current</span><span class="p">)</span>
344
+
345
+ <span class="c1"># Translate template</span>
346
+ <span class="n">translated</span> <span class="o">=</span> <span class="n">replace_placeholders</span><span class="p">(</span><span class="n">template_content</span><span class="p">,</span> <span class="n">fallback</span><span class="p">)</span>
347
+
348
+ <span class="c1"># Extract and show key elements</span>
349
+ <span class="n">lines</span> <span class="o">=</span> <span class="n">translated</span><span class="o">.</span><span class="n">split</span><span class="p">(</span><span class="s1">&#39;</span><span class="se">\n</span><span class="s1">&#39;</span><span class="p">)</span>
350
+ <span class="n">title</span> <span class="o">=</span> <span class="nb">next</span><span class="p">((</span><span class="n">line</span> <span class="k">for</span> <span class="n">line</span> <span class="ow">in</span> <span class="n">lines</span> <span class="k">if</span> <span class="s1">&#39;&lt;title&gt;&#39;</span> <span class="ow">in</span> <span class="n">line</span><span class="p">),</span> <span class="s1">&#39;&#39;</span><span class="p">)</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span>
351
+ <span class="n">header</span> <span class="o">=</span> <span class="nb">next</span><span class="p">((</span><span class="n">line</span> <span class="k">for</span> <span class="n">line</span> <span class="ow">in</span> <span class="n">lines</span> <span class="k">if</span> <span class="s1">&#39;&lt;h1&gt;&#39;</span> <span class="ow">in</span> <span class="n">line</span><span class="p">),</span> <span class="s1">&#39;&#39;</span><span class="p">)</span><span class="o">.</span><span class="n">strip</span><span class="p">()</span>
352
+
353
+ <span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot; Language: </span><span class="si">{</span><span class="n">current</span><span class="si">}</span><span class="s2"> -&gt; Fallback: </span><span class="si">{</span><span class="n">fallback</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
354
+ <span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot; </span><span class="si">{</span><span class="n">title</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
355
+ <span class="nb">print</span><span class="p">(</span><span class="sa">f</span><span class="s2">&quot; </span><span class="si">{</span><span class="n">header</span><span class="si">}</span><span class="s2">&quot;</span><span class="p">)</span>
356
+
357
+ <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;</span><span class="se">\n</span><span class="s2">✅ File integration tests completed!&quot;</span><span class="p">)</span></div>
358
+
359
+
360
+ <div class="viewcode-block" id="main">
361
+ <a class="viewcode-back" href="../../../../source/mindroot.coreplugins.l8n.html#mindroot.coreplugins.l8n.test_enhanced.main">[docs]</a>
362
+ <span class="k">async</span> <span class="k">def</span><span class="w"> </span><span class="nf">main</span><span class="p">():</span>
363
+ <span class="w"> </span><span class="sd">&quot;&quot;&quot;Run all enhanced tests.&quot;&quot;&quot;</span>
364
+ <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;=&quot;</span> <span class="o">*</span> <span class="mi">60</span><span class="p">)</span>
365
+ <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;MindRoot l8n Plugin - Enhanced Testing Suite&quot;</span><span class="p">)</span>
366
+ <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;=&quot;</span> <span class="o">*</span> <span class="mi">60</span><span class="p">)</span>
367
+
368
+ <span class="k">await</span> <span class="n">test_language_detection</span><span class="p">()</span>
369
+ <span class="k">await</span> <span class="n">test_integrated_translation</span><span class="p">()</span>
370
+ <span class="k">await</span> <span class="n">test_file_integration</span><span class="p">()</span>
371
+
372
+ <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;</span><span class="se">\n</span><span class="s2">&quot;</span> <span class="o">+</span> <span class="s2">&quot;=&quot;</span> <span class="o">*</span> <span class="mi">60</span><span class="p">)</span>
373
+ <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;✅ All enhanced tests completed successfully!&quot;</span><span class="p">)</span>
374
+ <span class="nb">print</span><span class="p">(</span><span class="s2">&quot;=&quot;</span> <span class="o">*</span> <span class="mi">60</span><span class="p">)</span></div>
375
+
376
+
377
+ <span class="k">if</span> <span class="vm">__name__</span> <span class="o">==</span> <span class="s2">&quot;__main__&quot;</span><span class="p">:</span>
378
+ <span class="n">asyncio</span><span class="o">.</span><span class="n">run</span><span class="p">(</span><span class="n">main</span><span class="p">())</span>
379
+ </pre></div>
380
+
381
+ </div>
382
+ </div>
383
+ <footer>
384
+
385
+ <hr/>
386
+
387
+ <div role="contentinfo">
388
+ <p>&#169; Copyright 2025, Jason Livesay.</p>
389
+ </div>
390
+
391
+ Built with <a href="https://www.sphinx-doc.org/">Sphinx</a> using a
392
+ <a href="https://github.com/readthedocs/sphinx_rtd_theme">theme</a>
393
+ provided by <a href="https://readthedocs.org">Read the Docs</a>.
394
+
395
+
396
+ </footer>
397
+ </div>
398
+ </div>
399
+ </section>
400
+ </div>
401
+ <script>
402
+ jQuery(function () {
403
+ SphinxRtdTheme.Navigation.enable(true);
404
+ });
405
+ </script>
406
+
407
+ </body>
408
+ </html>