You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@superset.apache.org by hu...@apache.org on 2026/10/19 18:43:40 UTC

(superset) 03/03: Merge branch 'master' into hughhhh/pfm-6-explore-indicator

This is an automated email from the ASF dual-hosted git repository.

hughhhh pushed a commit to branch hughhhh/pfm-6-explore-indicator
in repository https://gitbox.apache.org/repos/asf/superset.git

commit 677af5f834fe3ea7d20cacc763b79dd84449216c
Merge: 8c81b52f86e 99ecfe5801c
Author: Hugh A. Miles II <hu...@gmail.com>
AuthorDate: Mon Oct 19 18:33:09 2026 +0000

    Merge branch 'master' into hughhhh/pfm-6-explore-indicator
    
    Conflicts, and how they were resolved:
    
    - `tests/unit_tests/commands/dataset/test_create.py`,
      `tests/unit_tests/dashboards/datasets_test.py`: both sides appended tests
      and added imports beside each other. Resolved as a union -- master's
      editorship/template-params create tests and its ambiguous-semantic-view
      test, plus this branch's partition-mapping tests and the three partition
      fields it adds to the dashboard dataset field-set assertion.
    
    - `superset/translations/messages.pot` and all 31 catalogs: both sides had
      regenerated them from different trees. Took master's catalogs (they carry
      the community translations that landed since the last merge; this branch's
      catalog commits are pure regenerations with empty msgstrs) and re-ran
      `scripts/translations/babel_update.sh` over the merged tree.
      `check_pot_drift.py` reports the template matches a fresh extraction, and
      `check_translation_regression.py --compare` against master reports +0 on
      every language.
    
    `superset/commands/dataset/create.py` auto-merged master's
    `allow_editorship=False` / `template_params` access check against this
    branch's partition-mapping validation; the merged pair is covered by the
    united test file. `docs/static/resources/openapi.json` auto-merged to exactly
    what `superset update-api-docs` regenerates on the pinned apispec 6.6.1.
    
    Co-Authored-By: Claude Opus 5 (1M context) <no...@anthropic.com>

 .github/workflows/bashlib.sh                       |    13 +
 .github/workflows/bump-python-package.yml          |     2 +-
 .github/workflows/pre-commit.yml                   |    14 +
 .github/workflows/python-nightly-canary.yml        |     6 +
 .github/workflows/superset-e2e.yml                 |    14 +
 .github/workflows/superset-frontend.yml            |     2 +-
 .github/workflows/superset-helm-lint-test.yml      |     2 +-
 .../workflows/superset-python-unittest-report.yml  |     2 +-
 .github/workflows/superset-python-unittest.yml     |     7 +
 .gitignore                                         |     2 +
 .pre-commit-config.yaml                            |    39 +-
 RELEASING/requirements.txt                         |     2 +-
 UPDATING.md                                        |    73 +-
 docs/admin_docs/configuration/mcp-server.mdx       |     5 +-
 docs/developer_docs/semantic-query-errors.md       |    43 +-
 .../creating-your-first-dashboard.mdx              |    22 +
 docs/docs/using-superset/exploring-data.mdx        |    36 +
 .../using-superset/semantic-member-selections.mdx  |    10 +
 docs/docusaurus.config.ts                          |    53 +-
 docs/package.json                                  |     4 +-
 docs/static/resources/openapi.json                 |     9 +-
 docs/yarn.lock                                     |   230 +-
 pyproject.toml                                     |    20 +-
 requirements/base.txt                              |    10 +-
 requirements/development.in                        |     2 +-
 requirements/development.txt                       |    22 +-
 superset-core/pyproject.toml                       |     2 +-
 .../src/superset_core/semantic_layers/types.py     |    22 +-
 .../src/superset_core/semantic_layers/view.py      |    17 +-
 .../src/superset_extensions_cli/cli.py             |     7 +-
 .../templates/frontend/package.json.j2             |     8 +-
 superset-extensions-cli/tests/test_cli_build.py    |     4 +-
 ...runner.ts => playwright.storybook-ci.config.ts} |    32 +-
 superset-frontend/.storybook/setup-stories.test.ts |   156 +
 superset-frontend/.storybook/setup-stories.ts      |   179 +
 .../.storybook/{test-runner.ts => stories.spec.ts} |    24 +-
 superset-frontend/jest.config.js                   |     3 +-
 superset-frontend/package-lock.json                | 34519 +++++++++----------
 superset-frontend/package.json                     |    21 +-
 .../packages/superset-ui-core/package.json         |     2 +-
 .../src/components/Loading/Loading.stories.tsx     |     5 +-
 .../playwright/helpers/api/semanticLayer.test.ts   |    65 +
 .../playwright/helpers/api/semanticLayer.ts        |   136 +
 .../playwright/helpers/fixtures/testAssets.ts      |    25 +-
 .../tests/dashboard/dashboard-test-helpers.ts      |    20 +-
 .../semantic-view/semantic-view-dashboard.spec.ts  |   204 +
 .../src/Timeseries/EchartsTimeseries.tsx           |     4 +
 .../test/Timeseries/EchartsTimeseries.test.tsx     |     6 +
 .../src/plugin/buildQuery.ts                       |     8 +-
 .../src/plugin/transformProps.ts                   |     4 +-
 .../src/plugin/utilities.ts                        |    42 +-
 .../src/react-pivottable/Styles.ts                 |    98 +-
 .../src/react-pivottable/TableRenderers.tsx        |    97 +-
 .../test/plugin/transformProps.test.ts             |     2 +-
 .../test/plugin/utilities.test.ts                  |    49 +-
 .../test/react-pivottable/Styles.test.tsx          |   328 +
 .../test/react-pivottable/tableRenders.test.tsx    |    22 +
 .../plugin-chart-pivot-table/test/testData.ts      |    68 +
 .../src/SqlLab/actions/sqlLab.test.ts              |    57 +
 superset-frontend/src/SqlLab/actions/sqlLab.ts     |    32 +-
 .../src/components/Chart/Chart.test.tsx            |    38 +
 superset-frontend/src/components/Chart/Chart.tsx   |     8 +
 .../src/components/Chart/chartAction.ts            |    34 +
 .../src/components/Chart/chartActions.test.ts      |    62 +
 .../src/components/Datasource/utils/index.ts       |    12 +-
 .../src/components/Datasource/utils/utils.test.tsx |    28 +-
 .../src/dashboard/actions/hydrate.test.ts          |    43 +
 superset-frontend/src/dashboard/actions/hydrate.ts |    32 +-
 .../FilterBar/FilterControls/FilterValue.test.tsx  |    53 +
 .../FilterBar/FilterControls/FilterValue.tsx       |    16 +-
 .../FiltersConfigForm/FiltersConfigForm.tsx        |    22 +-
 .../FiltersConfigForm/getControlItemsMap.test.tsx  |    19 +-
 .../FiltersConfigForm/getControlItemsMap.tsx       |     1 +
 .../FiltersConfigForm/utils.test.ts                |    41 +
 .../FiltersConfigModal/FiltersConfigForm/utils.ts  |    27 +-
 .../FiltersConfigModal/FiltersConfigModal.test.tsx |    40 +
 .../util/charts/getFormDataWithExtraFilters.ts     |     7 +-
 .../util/getFormDataWithExtraFilters.test.ts       |    49 +
 .../components/DateFunctionTooltip.tsx             |     2 +-
 ...AdhocFilterEditPopoverSimpleTabContent.test.tsx |    69 +-
 .../index.tsx                                      |    38 +-
 superset-frontend/src/explore/types.ts             |     2 +
 .../src/features/charts/ChartCard.test.tsx         |    32 +
 .../src/features/charts/ChartCard.tsx              |    10 +-
 .../src/features/dashboards/DashboardCard.test.tsx |    47 +-
 .../src/features/dashboards/DashboardCard.tsx      |    14 +-
 .../src/features/home/DashboardTable.test.tsx      |    58 +-
 .../src/features/home/DashboardTable.tsx           |    31 +-
 .../versionHistory/RelatedUpdateRow.test.tsx       |    27 +
 .../features/versionHistory/RelatedUpdateRow.tsx   |     5 +-
 .../versionHistory/VersionHistoryPanel.test.tsx    |    32 +
 .../versionHistory/VersionHistoryPanel.tsx         |     1 +
 .../src/features/versionHistory/display.test.ts    |    47 +
 .../src/features/versionHistory/display.ts         |    33 +-
 .../filters/components/Range/RangeChart.test.tsx   |   115 +
 .../components/Range/RangeFilterPlugin.test.tsx    |   475 +-
 .../filters/components/Range/RangeFilterPlugin.tsx |   195 +-
 .../filters/components/Range/buildQuery.test.ts    |    50 +
 .../src/filters/components/Range/buildQuery.ts     |     4 +
 .../src/filters/components/Range/index.ts          |     2 +
 .../filters/components/Range/isSemanticRange.ts}   |    32 +-
 .../src/filters/components/Range/transformProps.ts |     2 +-
 .../pages/ChartList/ChartList.permissions.test.tsx |    27 +-
 superset-frontend/src/pages/ChartList/index.tsx    |    10 +-
 .../DashboardList/DashboardList.cardview.test.tsx  |    77 +-
 .../DashboardList.permissions.test.tsx             |    34 +-
 .../src/pages/DashboardList/index.tsx              |    31 +-
 .../DatasetList/DatasetList.permissions.test.tsx   |    30 +
 superset-frontend/src/pages/DatasetList/index.tsx  |    10 +-
 .../src/utils/semanticViewStructure.test.ts        |    50 +
 .../src/utils/semanticViewStructure.ts             |     2 +-
 superset-websocket/README.md                       |    25 +
 superset-websocket/config.example.json             |    10 +-
 superset-websocket/package-lock.json               |    56 +-
 superset-websocket/package.json                    |     2 +-
 superset-websocket/spec/config.test.ts             |    42 +
 superset-websocket/spec/index.test.ts              |   161 +-
 superset-websocket/src/config.ts                   |    75 +
 superset-websocket/src/index.ts                    |    93 +-
 .../utils/client-ws-app/package-lock.json          |   147 +-
 .../utils/client-ws-app/package.json               |     2 +-
 superset/charts/api.py                             |     7 +-
 superset/charts/data/api.py                        |    29 +-
 superset/charts/schemas.py                         |     4 +-
 superset/commands/chart/data/get_data_command.py   |    37 +-
 superset/commands/chart/exceptions.py              |     4 +
 superset/commands/dataset/create.py                |    69 +-
 superset/commands/dataset/duplicate.py             |    48 +-
 superset/commands/dataset/exceptions.py            |    46 +
 superset/commands/dataset/importers/v1/utils.py    |   194 +-
 superset/commands/dataset/update.py                |   127 +-
 superset/commands/importers/v1/examples.py         |     8 +-
 superset/commands/importers/v1/utils.py            |    49 +-
 superset/common/db_query_status.py                 |     6 +
 superset/common/query_context_processor.py         |    17 +-
 superset/common/query_object_factory.py            |    31 +-
 superset/common/utils/time_range_utils.py          |    32 +-
 superset/constants.py                              |     1 +
 superset/daos/query.py                             |    26 +-
 superset/dashboards/api.py                         |     8 +-
 superset/dashboards/schemas.py                     |     3 +
 superset/databases/api.py                          |     7 +-
 superset/datasets/api.py                           |     7 +-
 superset/datasource/api.py                         |    86 +-
 superset/db_engine_specs/README.md                 |     2 +
 superset/db_engine_specs/base.py                   |     3 +
 superset/db_engine_specs/impala.py                 |    48 +-
 superset/db_engine_specs/trino.py                  |    35 +-
 superset/exceptions.py                             |    27 +
 superset/extensions/metadb.py                      |     3 +-
 superset/importexport/api.py                       |     7 +-
 superset/initialization/__init__.py                |    27 +-
 superset/jinja_context.py                          |    17 +
 superset/mcp_service/chart/tool/get_chart_data.py  |    53 +-
 superset/mcp_service/dashboard/permalink.py        |     6 +-
 superset/models/dashboard.py                       |    13 +
 superset/models/helpers.py                         |    89 +-
 superset/models/slice.py                           |    23 +-
 superset/queries/api.py                            |    15 +-
 superset/queries/saved_queries/api.py              |     7 +-
 superset/security/manager.py                       |    65 +-
 superset/semantic_layers/dimension_resolution.py   |   117 +
 superset/semantic_layers/exceptions.py             |    11 +-
 superset/semantic_layers/mapper.py                 |   226 +-
 superset/semantic_layers/models.py                 |   175 +-
 superset/sql/execution/celery_task.py              |   466 +-
 superset/sql/execution/executor.py                 |    24 +-
 superset/sql/execution/utils.py                    |   260 +
 superset/sql/parse.py                              |    38 +-
 superset/sql_lab.py                                |   366 +-
 superset/subjects/utils.py                         |    19 +-
 superset/tasks/async_queries.py                    |    19 +-
 superset/themes/api.py                             |     7 +-
 superset/translations/ar/LC_MESSAGES/messages.po   |   192 +-
 superset/translations/ca/LC_MESSAGES/messages.po   |   174 +-
 superset/translations/cs/LC_MESSAGES/messages.po   |   180 +-
 superset/translations/de/LC_MESSAGES/messages.po   |   174 +-
 superset/translations/en/LC_MESSAGES/messages.po   |   156 +-
 superset/translations/es/LC_MESSAGES/messages.po   |   174 +-
 superset/translations/fa/LC_MESSAGES/messages.po   |   168 +-
 superset/translations/fi/LC_MESSAGES/messages.po   |   168 +-
 superset/translations/fr/LC_MESSAGES/messages.po   |   174 +-
 superset/translations/it/LC_MESSAGES/messages.po   |   174 +-
 superset/translations/ja/LC_MESSAGES/messages.po   |   168 +-
 superset/translations/ko/LC_MESSAGES/messages.po   |   162 +-
 superset/translations/lv/LC_MESSAGES/messages.po   |   180 +-
 superset/translations/messages.pot                 |    57 +-
 superset/translations/mi/LC_MESSAGES/messages.po   |   174 +-
 superset/translations/nl/LC_MESSAGES/messages.po   |   168 +-
 superset/translations/pl/LC_MESSAGES/messages.po   |   170 +-
 superset/translations/pt/LC_MESSAGES/messages.po   |   174 +-
 .../translations/pt_BR/LC_MESSAGES/messages.po     |   168 +-
 superset/translations/ro/LC_MESSAGES/messages.po   |   180 +-
 superset/translations/ru/LC_MESSAGES/messages.po   |   180 +-
 superset/translations/sk/LC_MESSAGES/messages.po   |   180 +-
 superset/translations/sl/LC_MESSAGES/messages.po   |   186 +-
 superset/translations/sr/LC_MESSAGES/messages.po   |   180 +-
 .../translations/sr_Latn/LC_MESSAGES/messages.po   |   180 +-
 superset/translations/ta/LC_MESSAGES/messages.po   |   174 +-
 superset/translations/th/LC_MESSAGES/messages.po   |   162 +-
 superset/translations/tr/LC_MESSAGES/messages.po   |   168 +-
 superset/translations/uk/LC_MESSAGES/messages.po   |   186 +-
 superset/translations/zh/LC_MESSAGES/messages.po   |   162 +-
 .../translations/zh_TW/LC_MESSAGES/messages.po     |   162 +-
 superset/utils/error_sanitization.py               |    38 +
 superset/utils/schema.py                           |    60 +
 superset/utils/screenshot_utils.py                 |    34 +-
 superset/versioning/changes/shadow_queries.py      |     9 +-
 superset/versioning/diff.py                        |    56 +-
 superset/views/api.py                              |     5 +
 superset/views/datasource/views.py                 |    80 +-
 .../src/superset_e2e_semantic_stub/__init__.py     |   270 +
 .../semantic_stub/dist/manifest.json               |    10 +
 tests/integration_tests/datasource/api_tests.py    |   237 +-
 tests/integration_tests/queries/api_tests.py       |    29 +-
 .../security/row_level_security_tests.py           |    69 +
 tests/integration_tests/security_tests.py          |   113 +-
 tests/integration_tests/sqllab_tests.py            |    29 +-
 .../superset_test_config_semantic.py               |    34 +-
 .../mypy_fixtures/__init__.py                      |    13 +-
 tests/mypy_fixtures/uuid_mixin_nullable.py         |    44 +
 tests/testcontainers/db_engine_specs/test_mysql.py |   113 +
 .../db_engine_specs/test_postgres.py               |   690 +
 .../charts/commands/data/test_get_data_command.py  |    63 +-
 tests/unit_tests/charts/test_schemas.py            |    51 +-
 tests/unit_tests/commands/dataset/test_create.py   |   268 +-
 .../unit_tests/commands/dataset/test_duplicate.py  |   136 +-
 tests/unit_tests/commands/dataset/update_test.py   |   475 +-
 .../commands/importers/v1/examples_test.py         |    51 +
 .../unit_tests/commands/importers/v1/utils_test.py |   143 +
 .../common/test_query_context_processor.py         |    69 +
 tests/unit_tests/common/test_time_range_utils.py   |    27 +
 tests/unit_tests/conftest.py                       |    53 +-
 tests/unit_tests/dao/queries_test.py               |    30 +-
 tests/unit_tests/dao/query_stop_isolation_test.py  |   126 +
 tests/unit_tests/dao/test_query_stop_race.py       |    73 +-
 tests/unit_tests/daos/test_query_dao.py            |   619 +
 tests/unit_tests/dashboards/datasets_test.py       |    65 +
 tests/unit_tests/databases/api_test.py             |    47 +-
 .../datasets/commands/importers/v1/import_test.py  |   608 +-
 tests/unit_tests/datasource/test_compatible_api.py |    85 +
 .../db_engine_specs/test_impala_pending.py         |   132 +-
 tests/unit_tests/db_engine_specs/test_trino.py     |    52 +
 tests/unit_tests/exceptions_test.py                |    46 +
 tests/unit_tests/importexport/api_test.py          |    42 +
 .../mcp_service/chart/test_bullet_chart.py         |    18 +-
 .../mcp_service/chart/test_bullet_tool_paths.py    |    21 +-
 .../mcp_service/chart/tool/test_get_chart_data.py  |   322 +-
 .../mcp_service/dashboard/test_permalink.py        |    40 +-
 .../mcp_service/dataset/tool/test_query_dataset.py |    44 +-
 .../semantic_layer/tool/test_get_table.py          |    27 +-
 .../semantic_layer/tool/test_list_metrics.py       |     8 +-
 .../mcp_service/test_validation_contract.py        |     2 +-
 tests/unit_tests/models/slice_test.py              |    87 +
 tests/unit_tests/models/template_params_test.py    |    68 +
 .../scripts/translations/babel_update_test.py      |   105 +-
 tests/unit_tests/security/manager_test.py          |   174 +
 .../semantic_layers/dimension_resolution_test.py   |   161 +
 .../semantic_layers/e2e_stub_extension_test.py     |   257 +
 tests/unit_tests/semantic_layers/mapper_test.py    |   745 +-
 tests/unit_tests/semantic_layers/models_test.py    |   229 +-
 .../semantic_layers/query_errors_test.py           |   229 +
 .../semantic_layers/simple_cache_clear_test.py     |    10 +-
 .../semantic_layers/values_endpoint_test.py        |   108 +
 tests/unit_tests/sql/execution/conftest.py         |     1 +
 tests/unit_tests/sql/execution/test_celery_task.py |  2222 +-
 tests/unit_tests/sql/execution/test_executor.py    |    42 +-
 tests/unit_tests/sql/execution/test_utils.py       |   207 +
 tests/unit_tests/sql/parse_tests.py                |    95 +
 tests/unit_tests/sql_lab_test.py                   |  1714 +
 tests/unit_tests/tasks/test_async_queries.py       |    44 +
 tests/unit_tests/test_app_reinitialization.py      |   114 +
 tests/unit_tests/test_sqllab_error_stacktrace.py   |    17 +-
 tests/unit_tests/themes/api_test.py                |    33 +
 tests/unit_tests/utils/test_error_sanitization.py  |    94 +
 tests/unit_tests/utils/test_schema.py              |   138 +
 tests/unit_tests/utils/test_screenshot_utils.py    |   134 +
 .../versioning/test_dataset_child_extra.py         |   148 +
 tests/unit_tests/versioning/test_shadow_queries.py |    79 +
 tests/unit_tests/views/datasource/views_test.py    |   440 +-
 tests/unit_tests/views/test_base.py                |    72 +
 281 files changed, 40003 insertions(+), 21360 deletions(-)

diff --cc superset/commands/dataset/create.py
index 438c2bf0fb7,cd366f5bf56..6f3b3291a58
--- a/superset/commands/dataset/create.py
+++ b/superset/commands/dataset/create.py
@@@ -30,13 -29,12 +30,16 @@@ from superset.commands.dataset.exceptio
      DatasetExistsValidationError,
      DatasetInvalidError,
      DatasetSoftDeletedTwinExistsError,
+     DatasetSqlRenderValidationError,
      TableNotFoundValidationError,
+     TEMPLATE_RENDER_ERRORS,
+     TemplateParamsInvalidValidationError,
  )
  from superset.commands.utils import populate_subjects
 +from superset.connectors.sqla.partition_mapping import (
 +    FEATURE_FLAG as PARTITION_FILTER_MAPPING,
 +    validate_partition_mapping,
 +)
  from superset.daos.dataset import DatasetDAO
  from superset.db_engine_specs.exceptions import (
      SupersetDBAPIConnectionError,
diff --cc superset/commands/dataset/importers/v1/utils.py
index 6c6cc685b27,ea77b3a5f0b..efa26c6d9e9
--- a/superset/commands/dataset/importers/v1/utils.py
+++ b/superset/commands/dataset/importers/v1/utils.py
@@@ -255,134 -255,144 +262,253 @@@ def validate_catalog(config: dict[str, 
          raise MultiCatalogDisabledValidationError()
  
  
- def _get_template_params(dataset: SqlaTable) -> dict[str, Any]:
-     """
-     Return a dataset's template params as a dict for the access check.
+ def _readable_template_params(value: Any) -> dict[str, Any] | None:
+     """Template params as execution will read them, or ``None`` if it can't.
+ 
+     A config's params arrive as a dict, which the import stores as
+     ``json.dumps(value)`` (see ``JSON_KEYS``) and execution reads back with
+     ``json_to_dict``. That round trip can change values (``json_to_dict``
+     rewrites ``", }"`` even inside a string; ``NaN`` and dates serialize
+     differently), so a dict is put through the same round trip before it is
+     compared or rendered.
  
-     Delegates to ``template_params_dict`` so the check reads the params the
-     same way rendering does, but tolerates the two inputs that property does
-     not guard: it raises on malformed JSON and passes non-dict JSON through.
-     Either yields an empty dict so the check still runs against the raw SQL.
+     ``None`` never equals readable params, so unreadable params always count
+     as a change, and the binding check below refuses to render with them.
      """
      try:
-         params = dataset.template_params_dict
-     except json.JSONDecodeError:
-         logger.warning(
-             "Unable to decode template_params for dataset %s", dataset.table_name
+         if isinstance(value, dict):
+             value = json.dumps(value)
+         return parse_template_params(value)
+     except (TypeError, ValueError):
+         return None
+ 
+ 
+ def _raise_for_import_binding_access(
+     config: dict[str, Any], existing: SqlaTable | None
+ ) -> None:
+     """Authorize the table binding a dataset import will apply.
+ 
+     Runs BEFORE ``import_from_dict`` mutates the row, against the *requested*
+     (``config``) binding rather than the stored dataset: the per-table lookup
+     would otherwise resolve the dataset being imported itself (whose ``perm``
+     is schema-blind), letting a ``datasource_access`` holder repoint it to
+     another schema and read it through chart-data. ``allow_editorship=False``
+     means editorship of a same-named dataset is not accepted -- defining or
+     repointing a dataset over a table requires real data access to that
+     table. Skipped when the binding is unchanged (a metadata-only re-import is
+     not a repoint), matching ``UpdateDatasetCommand``.
+     """
+     database = db.session.query(Database).filter_by(id=config["database_id"]).first()
+     if database is None:
+         # A missing database is reported downstream by import_from_dict; there
+         # is no table binding to authorize here.
+         return
+ 
+     # Resolve the requested binding by MERGING the config over the stored row:
+     # an overwrite only applies the keys the upload carries, so an omitted
+     # field keeps its stored value. Resolving in isolation would mis-authorize
+     # (e.g. omitted ``sql`` -> treat a virtual dataset as physical; omitted
+     # ``template_params`` -> render against ``{}`` while the stored params are
+     # kept).
+     requested_sql = (
+         config["sql"] if "sql" in config else (existing.sql if existing else None)
+     ) or None
+     requested_table_name = config.get("table_name") or (
+         existing.table_name if existing else None
+     )
+     requested_schema = config.get("schema", existing.schema if existing else None)
+     requested_catalog = config.get("catalog", existing.catalog if existing else None)
+     stored_params = (
+         _readable_template_params(existing.template_params) if existing else {}
+     )
+     if "template_params" in config:
+         requested_params = _readable_template_params(config["template_params"])
+         # Re-importing the value already stored is not a change, even when it
+         # is a legacy non-object value (``import_from_dict`` stores it as
+         # ``json.dumps(config[...])``), matching UpdateDatasetCommand's echo
+         # handling. Otherwise compared type-sensitively the way execution reads
+         # them: ``1`` and ``true`` differ even though the dicts are
+         # Python-equal; an unreadable value that is a real change fails closed.
+         config_stored_form = (
+             json.dumps(config["template_params"])
+             if config["template_params"] is not None
+             else None
+         )
+         params_unchanged = (
+             existing is not None and config_stored_form == existing.template_params
+         ) or (
+             requested_params is not None
+             and stored_params is not None
+             and template_params_equivalent(requested_params, stored_params)
+         )
+     else:
+         requested_params = stored_params
+         params_unchanged = True
+ 
+     if existing is not None and (
+         config["database_id"] == existing.database_id
+         and requested_sql == (existing.sql or None)
+         # A virtual dataset's table_name is only a label -- its SQL is the
+         # binding -- so renaming one is not a repoint, as with PUT and
+         # ``/datasource/save/``.
+         and (bool(requested_sql) or requested_table_name == existing.table_name)
+         and requested_schema == existing.schema
+         and requested_catalog == existing.catalog
+         and params_unchanged
+     ):
+         # Binding unchanged -- a metadata-only re-import, not a repoint.
+         # The database and template_params are part of the binding: an
+         # overwrite that keeps table/schema/catalog/sql but points at a
+         # different database, or changes the params a templated FROM renders
+         # against, still repoints the dataset and must be re-authorized
+         # (matching UpdateDatasetCommand).
+         return
+ 
+     if requested_sql:
+         if requested_params is None:
+             # Execution would read these params differently than any access
+             # decision made here could, so fail closed as a bad payload.
+             raise IncorrectFormatError("Invalid template_params: must be a JSON object")
+         try:
+             security_manager.raise_for_access(
+                 database=database,
+                 sql=requested_sql,
+                 # Empty strings would qualify table names against a nonexistent
+                 # catalog/schema, so they are normalized to None.
+                 catalog=requested_catalog or None,
+                 schema=requested_schema or None,
+                 template_params=template_params_for_access_check(requested_params),
+                 allow_editorship=False,
+             )
+         except TEMPLATE_RENDER_ERRORS as ex:
+             # SQL that can't be rendered with its params can't be
+             # access-checked: fail closed as a bad payload, not a 500.
+             raise IncorrectFormatError(
+                 f"Invalid SQL: {get_template_render_error_msg(ex)}"
+             ) from ex
+     elif isinstance(requested_table_name, str):
+         # A physical dataset always carries a table_name (the import schema
+         # requires it); the guard also narrows the type for the check below.
+         security_manager.raise_for_access(
+             database=database,
+             table=Table(
+                 requested_table_name,
+                 requested_schema or None,
+                 requested_catalog or None,
+             ),
+             allow_editorship=False,
          )
-         return {}
-     return params if isinstance(params, dict) else {}
  
  
 +def _default_omitted_monotonic_declarations(columns: list[dict[str, Any]]) -> None:
 +    """
 +    Materialize `partition_transform_is_monotonic` wherever a transform is set.
 +
 +    `ImportV1ColumnSchema` gives the declaration a `load_default` of False so a
 +    bundle predating the field cannot claim its transform preserves ordering.
 +    That default never reaches storage: the import pipeline validates the
 +    payload and then applies the *raw* config, so on an overwrite an omitted key
 +    keeps whatever is stored -- including a True left behind by the transform
 +    this bundle is replacing. A non-monotonic transform declared monotonic
 +    enables range mirrors that exclude rows the filter keeps.
 +
 +    Only columns that supply a transform are touched, so a re-import that says
 +    nothing about a column stays idempotent.
 +    """
 +    for column in columns:
 +        if column.get("partition_value_transform"):
 +            column.setdefault("partition_transform_is_monotonic", False)
 +
 +
 +def drop_unusable_partition_transforms(
 +    config: dict[str, Any], database: Database | None = None
 +) -> None:
 +    """
 +    Drop a partition value transform the save path would have rejected.
 +
 +    Import is the one door into this field that does not go through
 +    `UpdateDatasetCommand`, so a bundle can carry a transform holding Jinja or
 +    calling a non-deterministic function -- one that will never mirror a filter,
 +    and that the editor can only report as broken after the fact. Dropping it on
 +    the way in leaves the column with no transform, a state an owner can see and
 +    fix, rather than a stored expression that looks configured and is not.
 +
 +    Deliberately sanitizes rather than raises. A bundle is imported as a whole,
 +    and failing someone's entire dataset over one unusable expression is a worse
 +    trade than importing the dataset without it. This is the same bargain
 +    `DatasetDAO.clear_dangling_partition_mapping` already strikes for a mapping
 +    whose column went away.
 +
 +    Two kinds of check, and only one of them answers to the feature flag. The
 +    usability checks ask whether a transform will ever mirror a filter, which
 +    is a question about a live feature; with the flag off nothing mirrors, so
 +    rewriting the bundle would discard configuration for no gain. The
 +    structural check asks whether the expression is one this product stores at
 +    all, and that answer does not change with a flag -- an import written while
 +    the flag was off would otherwise sit in the metadata DB fully armed,
 +    waiting for an operator to turn the flag on.
 +
 +    ``database`` is accepted already resolved for the v0 importer, whose bundles
 +    nest a dataset under the connection being imported and so carry no
 +    ``database_id`` to look one up by. Resolving it here as before when the
 +    caller passes nothing.
 +    """
 +    columns = config.get("columns")
 +    if not columns:
 +        return
 +    if not any(column.get("partition_value_transform") for column in columns):
 +        return
 +
 +    _default_omitted_monotonic_declarations(columns)
 +
 +    database = database or (
 +        db.session.query(Database).filter_by(id=config["database_id"]).first()
 +    )
 +    if database is None:
 +        return
 +
 +    check_usability = is_feature_enabled(PARTITION_FILTER_MAPPING)
 +    catalog = config.get("catalog")
 +    schema = config.get("schema")
 +
 +    for column in columns:
 +        transform = column.get("partition_value_transform")
 +        if not transform:
 +            continue
 +
 +        reasons: list[str] = []
 +        # Skipped only for a transform that is not SQL yet, which is the same
 +        # condition `UpdateDatasetCommand` puts in front of this gate. A PUT
 +        # stores a half-typed transform and reports the mapping inactive, and
 +        # `stored_expression_error` fails closed on anything that does not
 +        # parse -- as it must, for the probe's sake. Asking it here
 +        # unconditionally made export-then-import discard configuration the
 +        # editor keeps, flag on or off. Note this is narrower than "does not
 +        # parse": a multi-statement transform also fails to parse as a
 +        # statement, and it still has to be dropped.
 +        if not is_unfinished(transform, database.backend):
 +            if reason := stored_expression_error(database, catalog, schema, transform):
 +                reasons.append(reason)
 +        if check_usability:
 +            reasons.extend(
 +                str(issue.message)
 +                for issue in validate_transform(transform, database.backend)
 +                if issue.blocking
 +            )
 +
 +        if reasons:
 +            logger.warning(
 +                "Dropping the partition value transform on %s.%s (dataset %s) "
 +                "during import: %s",
 +                config.get("table_name"),
 +                column.get("column_name"),
 +                config.get("uuid"),
 +                "; ".join(reasons),
 +            )
 +            column["partition_value_transform"] = None
 +            column["partition_transform_is_monotonic"] = False
 +
 +
  def import_dataset(  # noqa: C901
      config: dict[str, Any],
      overwrite: bool = False,
@@@ -752,80 -721,15 +891,61 @@@
      if dataset.id is None:
          db.session.flush()
  
 +    # A bundle can name a mapped column and still carry transforms on other
 +    # columns; the editor's client-side guard never runs here. Left in place, a
 +    # transform on an unmirrored column is invisible and still stored, ready to
 +    # go live the moment the mapped column resolves back to it.
 +    DatasetDAO.clear_unmapped_partition_transforms(dataset)
 +
 +    # And repair a reference the import itself broke: a `sync` deletion can
 +    # remove the column `partition_column` names, which otherwise leaves the
 +    # dataset failing `UpdateDatasetCommand`'s validation on every later edit --
 +    # including a description-only PUT, which carries no columns payload and so
 +    # cannot reach the forgiveness branch that tolerates a stored-only dangle.
 +    #
 +    # Flushed and expired first: the `sync` deletion is still pending here, and
 +    # reading the relationship without flushing loads the removed rows back and
 +    # un-deletes them.
 +    db.session.flush()
 +    db.session.expire(dataset, ["columns"])
 +    DatasetDAO.clear_dangling_partition_mapping(
 +        dataset, {column.column_name for column in dataset.columns}
 +    )
 +
 +    # The same repair for the other reference a bundle can leave unsaveable. A
 +    # dangling reference is not the only mapping `UpdateDatasetCommand` refuses:
 +    # an *explicit* self-mapping -- `partition_mapped_column` equal to
 +    # `partition_column` -- is blocking there too. A bundle setting both to
 +    # `event_time` imported happily and then failed every later edit, including
 +    # a description-only PUT, until someone repaired the mapping by hand.
 +    #
 +    # Cleared rather than refused, which is the bargain the rest of this
 +    # function strikes: a bundle is imported as a whole, and failing someone's
 +    # dataset over one unusable reference is the worse trade. Dropping only the
 +    # override leaves the mapping following `main_dttm_col`, which is the state
 +    # a bundle that simply omitted the field would have produced.
 +    if (
 +        dataset.partition_mapped_column
 +        and dataset.partition_mapped_column == dataset.partition_column
 +    ):
 +        logger.warning(
 +            "Clearing the partition mapped column on %s (dataset %s) during "
 +            "import: it names the partition column itself, which no later save "
 +            "would accept",
 +            config.get("table_name"),
 +            config.get("uuid"),
 +        )
 +        dataset.partition_mapped_column = None
 +
      if not ignore_permissions:
+         # Object-level access to the dataset itself (editor/owner, #20382). A
+         # change to the table binding this dataset points at was authorized
+         # before the row was mutated, in ``_raise_for_import_binding_access``
+         # above.
          try:
              security_manager.raise_for_access(datasource=dataset)
-             # For virtual datasets, also validate access to the tables the
-             # SQL references, matching the create and update commands.
-             if dataset.sql:
-                 security_manager.raise_for_access(
-                     database=dataset.database,
-                     sql=dataset.sql,
-                     # Empty strings would qualify table names against a
-                     # nonexistent catalog/schema, so they are normalized to
-                     # None to let the check fall back to the defaults.
-                     catalog=dataset.catalog or None,
-                     schema=dataset.schema or None,
-                     # Jinja-templated SQL only reveals the tables it really
-                     # references once the params are applied, so they are
-                     # forwarded rather than left to default to empty.
-                     template_params=_get_template_params(dataset),
-                 )
          except SupersetSecurityException as ex:
              raise DatasetAccessDeniedError() from ex
-         # SQL that can't be parsed or rendered can't be access-checked, so fail
-         # closed, but as an invalid payload (422) rather than an access denial
-         # or a server error.
-         except SupersetParseError as ex:
-             raise IncorrectFormatError(f"Invalid SQL: {ex.error.message}") from ex
-         except TemplateError as ex:
-             raise IncorrectFormatError(f"Invalid SQL: {ex}") from ex
  
      # `has_table` opens a live connection to the target database to run a
      # schema-introspection query. Its result is only ever consulted below to
diff --cc superset/translations/ar/LC_MESSAGES/messages.po
index ee47f1ce240,b6e5f76c563..29d718130e7
--- a/superset/translations/ar/LC_MESSAGES/messages.po
+++ b/superset/translations/ar/LC_MESSAGES/messages.po
@@@ -24,7 -24,7 +24,7 @@@ msgid "
  msgstr ""
  "Project-Id-Version:  \n"
  "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
- "POT-Creation-Date: 2026-10-14 20:29+0000\n"
 -"POT-Creation-Date: 2026-10-16 15:10-0400\n"
++"POT-Creation-Date: 2026-10-19 18:27+0000\n"
  "PO-Revision-Date: 2024-07-14 15:10+0300\n"
  "Last-Translator: Abdalrahim G. Fakhouri <ab...@yahoo.com>\n"
  "Language: ar\n"
@@@ -243,6 -243,6 +243,13 @@@ msgstr "النسبة المئوية م�
  msgid "%(alertType)s \"%(alertName)s\" triggered successfully"
  msgstr ""
  
++#, python-format
++msgid ""
++"%(column)s is an array column, which cannot be compared against the "
++"single value a transform returns. Mirrored filters on this mapping would "
++"fail at the database. Map a scalar partition column instead."
++msgstr ""
++
  #, python-format
  msgid "%(count)s %(label)s"
  msgstr ""
@@@ -1340,52 -1284,12 +1347,58 @@@ msgstr "سيتم إنشاء مخطط ج
  msgid "A new dashboard will be created."
  msgstr "سيتم إنشاء لوحة معلومات جديدة."
  
 +#, python-format
 +msgid "A partition value transform cannot be longer than %(limit)d characters."
 +msgstr ""
 +
 +#, python-format
 +msgid "A partition value transform cannot call %(functions)s."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform cannot change data. It is evaluated against "
 +"the database to check that it mirrors, so it has to be a read."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform cannot contain a MySQL executable comment, "
 +"which the database executes and every validator reads as a comment."
 +msgstr ""
 +
 +msgid "A partition value transform cannot contain a sub-query."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform cannot name anything through a U&\"...\" "
 +"escape sequence, which the database decodes and every validator reads "
 +"literally."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform cannot read a sequence. NEXTVAL advances the "
 +"sequence every time it is evaluated, and the transform is evaluated on a "
 +"cache schedule."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform must be a single SQL expression, with no "
 +"FROM, WHERE or other clause."
 +msgstr ""
 +
 +msgid "A partition value transform must parse as a single SQL expression."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform must use the :value placeholder where the "
 +"engine will evaluate it, not inside a string literal or a comment."
 +msgstr ""
 +
+ #, python-format
+ msgid ""
+ "A password reset was requested for the %(app_name)s account "
+ "\"%(username)s\"."
+ msgstr ""
+ 
  msgid ""
  "A polar coordinate chart where the circle is broken into wedges of equal "
  "angle, and the value represented by any wedge is illustrated by its area,"
@@@ -4189,6 -4069,6 +4205,10 @@@ msgstr "عنوان الرسم البي�
  msgid "Chart type"
  msgstr "عنوان الرسم البياني"
  
++#, python-format
++msgid "Chart updated: %s"
++msgstr ""
++
  #, fuzzy
  msgid "Chart was saved but could not be added to the selected tab."
  msgstr "تعذر حذف المخططات."
@@@ -5903,6 -5781,6 +5929,10 @@@ msgstr "عنوان لوحة المعل�
  msgid "Dashboard updated %s"
  msgstr "آخر تحديث %s"
  
++#, python-format
++msgid "Dashboard updated: %s"
++msgstr ""
++
  msgid "Dashboard usage"
  msgstr "استخدام لوحة القيادة"
  
@@@ -6156,6 -6034,6 +6186,10 @@@ msgstr "
  msgid "Dataset schema is invalid, caused by: %(error)s"
  msgstr "مخطط مجموعة البيانات غير صالح، بسبب ما يلي: %(error)s"
  
++#, python-format
++msgid "Dataset updated: %s"
++msgstr ""
++
  #, python-format
  msgid "Dataset used by %s chart updated: %s"
  msgid_plural "Dataset used by %s charts updated: %s"
@@@ -15525,6 -15330,6 +15607,12 @@@ msgstr "العروض الدلالية
  msgid "Semantic cache"
  msgstr ""
  
++#, python-format
++msgid ""
++"Semantic dimension '%(name)s' has ambiguous variants for grain "
++"'%(grain)s'. Use one dimension per name and grain."
++msgstr ""
++
  #, fuzzy
  msgid "Semantic layer"
  msgstr "طبقة التعليقات التوضيحية"
@@@ -17187,6 -16996,6 +17284,9 @@@ msgstr "
  msgid "Template parameters"
  msgstr "معايير القالب"
  
++msgid "Template parameters must be a valid JSON object."
++msgstr ""
++
  #, fuzzy, python-format
  msgid "Template processing error: %(error)s"
  msgstr "خطأ: %(error)s"
@@@ -17976,15 -17775,9 +18076,18 @@@ msgstr[3] "المعاملات التا�
  msgstr[4] "المعاملات التالية في استعلامك غير معرّفة: %(parameters)s."
  msgstr[5] "المعاملات التالية في استعلامك غير معرّفة: %(parameters)s."
  
 +#, python-format
 +msgid ""
 +"The partition column cannot be mapped onto itself. %(name)s is both the "
 +"partition column and the mapped column."
 +msgstr ""
 +
 +msgid "The partition filter mapping was cleared: its column is gone"
 +msgstr ""
 +
+ msgid "The password could not be reset. Please try again."
+ msgstr ""
+ 
  #, python-format
  msgid "The password provided for username \"%(username)s\" is incorrect."
  msgstr "كلمة المرور المقدمة لاسم المستخدم \"%(username)s\" غير صحيحة."
@@@ -19878,9 -19610,9 +19991,12 @@@ msgstr[5] "
  msgid "Token Request URI"
  msgstr "عنوان URI لطلب الرمز"
  
 +msgid "Too many preview requests for this dataset. Wait a moment and try again."
 +msgstr ""
 +
+ msgid "Too many requests. Please wait and try again."
+ msgstr ""
+ 
  # Machine-translated via backfill_po.py (claude-sonnet-4-6) [refs: ja]
  #, fuzzy, python-format
  msgid ""
diff --cc superset/translations/ca/LC_MESSAGES/messages.po
index 65f65079349,f5a2c17bb90..ff4965105d6
--- a/superset/translations/ca/LC_MESSAGES/messages.po
+++ b/superset/translations/ca/LC_MESSAGES/messages.po
@@@ -21,7 -21,7 +21,7 @@@ msgid "
  msgstr ""
  "Project-Id-Version: Superset VERSION\n"
  "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
- "POT-Creation-Date: 2026-10-14 20:29+0000\n"
 -"POT-Creation-Date: 2026-10-16 15:10-0400\n"
++"POT-Creation-Date: 2026-10-19 18:27+0000\n"
  "PO-Revision-Date: 2025-06-27 12:56+0200\n"
  "Last-Translator: FULL NAME <EM...@ADDRESS>\n"
  "Language: ca\n"
@@@ -236,6 -236,6 +236,13 @@@ msgstr "%% del total
  msgid "%(alertType)s \"%(alertName)s\" triggered successfully"
  msgstr ""
  
++#, python-format
++msgid ""
++"%(column)s is an array column, which cannot be compared against the "
++"single value a transform returns. Mirrored filters on this mapping would "
++"fail at the database. Map a scalar partition column instead."
++msgstr ""
++
  #, python-format
  msgid "%(count)s %(label)s"
  msgstr ""
@@@ -1203,52 -1147,12 +1210,58 @@@ msgstr "Es crearà un nou gràfic.
  msgid "A new dashboard will be created."
  msgstr "Es crearà un nou dashboard."
  
 +#, python-format
 +msgid "A partition value transform cannot be longer than %(limit)d characters."
 +msgstr ""
 +
 +#, python-format
 +msgid "A partition value transform cannot call %(functions)s."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform cannot change data. It is evaluated against "
 +"the database to check that it mirrors, so it has to be a read."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform cannot contain a MySQL executable comment, "
 +"which the database executes and every validator reads as a comment."
 +msgstr ""
 +
 +msgid "A partition value transform cannot contain a sub-query."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform cannot name anything through a U&\"...\" "
 +"escape sequence, which the database decodes and every validator reads "
 +"literally."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform cannot read a sequence. NEXTVAL advances the "
 +"sequence every time it is evaluated, and the transform is evaluated on a "
 +"cache schedule."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform must be a single SQL expression, with no "
 +"FROM, WHERE or other clause."
 +msgstr ""
 +
 +msgid "A partition value transform must parse as a single SQL expression."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform must use the :value placeholder where the "
 +"engine will evaluate it, not inside a string literal or a comment."
 +msgstr ""
 +
+ #, python-format
+ msgid ""
+ "A password reset was requested for the %(app_name)s account "
+ "\"%(username)s\"."
+ msgstr ""
+ 
  msgid ""
  "A polar coordinate chart where the circle is broken into wedges of equal "
  "angle, and the value represented by any wedge is illustrated by its area,"
@@@ -4018,6 -3898,6 +4034,10 @@@ msgstr "Títol del gràfic
  msgid "Chart type"
  msgstr "Títol del gràfic"
  
++#, python-format
++msgid "Chart updated: %s"
++msgstr ""
++
  #, fuzzy
  msgid "Chart was saved but could not be added to the selected tab."
  msgstr "Els gràfics no s'han pogut eliminar."
@@@ -5684,6 -5562,6 +5710,10 @@@ msgstr "Títol del dashboard
  msgid "Dashboard updated %s"
  msgstr "Última Actualització %s"
  
++#, python-format
++msgid "Dashboard updated: %s"
++msgstr ""
++
  msgid "Dashboard usage"
  msgstr "Ús del dashboard"
  
@@@ -5934,6 -5812,6 +5964,10 @@@ msgstr "
  msgid "Dataset schema is invalid, caused by: %(error)s"
  msgstr "L'esquema del conjunt de dades és invàlid, causat per: %(error)s"
  
++#, python-format
++msgid "Dataset updated: %s"
++msgstr ""
++
  #, python-format
  msgid "Dataset used by %s chart updated: %s"
  msgid_plural "Dataset used by %s charts updated: %s"
@@@ -15010,6 -14815,6 +15092,12 @@@ msgstr "Vistes semàntiques
  msgid "Semantic cache"
  msgstr ""
  
++#, python-format
++msgid ""
++"Semantic dimension '%(name)s' has ambiguous variants for grain "
++"'%(grain)s'. Use one dimension per name and grain."
++msgstr ""
++
  #, fuzzy
  msgid "Semantic layer"
  msgstr "Capa d'anotació"
@@@ -16653,6 -16462,6 +16750,9 @@@ msgstr "
  msgid "Template parameters"
  msgstr "Paràmetres de plantilla"
  
++msgid "Template parameters must be a valid JSON object."
++msgstr ""
++
  #, fuzzy, python-format
  msgid "Template processing error: %(error)s"
  msgstr "Error d'anàlisi: %(error)s"
@@@ -17419,15 -17218,9 +17519,18 @@@ msgstr[1] "
  "Els següents paràmetres a la teva consulta no estan definits: "
  "%(parameters)s."
  
 +#, python-format
 +msgid ""
 +"The partition column cannot be mapped onto itself. %(name)s is both the "
 +"partition column and the mapped column."
 +msgstr ""
 +
 +msgid "The partition filter mapping was cleared: its column is gone"
 +msgstr ""
 +
+ msgid "The password could not be reset. Please try again."
+ msgstr ""
+ 
  #, python-format
  msgid "The password provided for username \"%(username)s\" is incorrect."
  msgstr "La contrasenya proporcionada per l'usuari \"%(username)s\" és incorrecta."
@@@ -19304,9 -19036,9 +19417,12 @@@ msgstr[1] "
  msgid "Token Request URI"
  msgstr "URI de sol·licitud de testimoni"
  
 +msgid "Too many preview requests for this dataset. Wait a moment and try again."
 +msgstr ""
 +
+ msgid "Too many requests. Please wait and try again."
+ msgstr ""
+ 
  # Machine-translated via backfill_po.py (claude-sonnet-4-6) [refs: ja]
  #, fuzzy, python-format
  msgid ""
diff --cc superset/translations/cs/LC_MESSAGES/messages.po
index 043b5a7287f,755851cf650..d8a8f76990c
--- a/superset/translations/cs/LC_MESSAGES/messages.po
+++ b/superset/translations/cs/LC_MESSAGES/messages.po
@@@ -18,7 -18,7 +18,7 @@@ msgid "
  msgstr ""
  "Project-Id-Version: Superset VERSION\n"
  "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
- "POT-Creation-Date: 2026-10-14 20:29+0000\n"
 -"POT-Creation-Date: 2026-10-16 15:10-0400\n"
++"POT-Creation-Date: 2026-10-19 18:27+0000\n"
  "PO-Revision-Date: 2016-05-02 08:49-0700\n"
  "Last-Translator: Jan Šmejkal <ja...@orgis.cz>\n"
  "Language: cs\n"
@@@ -226,6 -226,6 +226,13 @@@ msgstr "% z celku
  msgid "%(alertType)s \"%(alertName)s\" triggered successfully"
  msgstr ""
  
++#, python-format
++msgid ""
++"%(column)s is an array column, which cannot be compared against the "
++"single value a transform returns. Mirrored filters on this mapping would "
++"fail at the database. Map a scalar partition column instead."
++msgstr ""
++
  #, python-format
  msgid "%(count)s %(label)s"
  msgstr ""
@@@ -1209,52 -1153,12 +1216,58 @@@ msgstr "Bude vytvořen nový graf.
  msgid "A new dashboard will be created."
  msgstr "Bude vytvořena nová nástěnka."
  
 +#, python-format
 +msgid "A partition value transform cannot be longer than %(limit)d characters."
 +msgstr ""
 +
 +#, python-format
 +msgid "A partition value transform cannot call %(functions)s."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform cannot change data. It is evaluated against "
 +"the database to check that it mirrors, so it has to be a read."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform cannot contain a MySQL executable comment, "
 +"which the database executes and every validator reads as a comment."
 +msgstr ""
 +
 +msgid "A partition value transform cannot contain a sub-query."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform cannot name anything through a U&\"...\" "
 +"escape sequence, which the database decodes and every validator reads "
 +"literally."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform cannot read a sequence. NEXTVAL advances the "
 +"sequence every time it is evaluated, and the transform is evaluated on a "
 +"cache schedule."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform must be a single SQL expression, with no "
 +"FROM, WHERE or other clause."
 +msgstr ""
 +
 +msgid "A partition value transform must parse as a single SQL expression."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform must use the :value placeholder where the "
 +"engine will evaluate it, not inside a string literal or a comment."
 +msgstr ""
 +
+ #, python-format
+ msgid ""
+ "A password reset was requested for the %(app_name)s account "
+ "\"%(username)s\"."
+ msgstr ""
+ 
  msgid ""
  "A polar coordinate chart where the circle is broken into wedges of equal "
  "angle, and the value represented by any wedge is illustrated by its area,"
@@@ -3902,6 -3782,6 +3918,10 @@@ msgstr "Název grafu
  msgid "Chart type"
  msgstr "Typ grafu"
  
++#, python-format
++msgid "Chart updated: %s"
++msgstr ""
++
  #, fuzzy
  msgid "Chart was saved but could not be added to the selected tab."
  msgstr "Graf byl uložen, ale se nepodařilo přidat do vybraného panelu."
@@@ -5498,6 -5376,6 +5524,10 @@@ msgstr "Název nástěnky
  msgid "Dashboard updated %s"
  msgstr "Naposledy aktualizováno %s"
  
++#, python-format
++msgid "Dashboard updated: %s"
++msgstr ""
++
  msgid "Dashboard usage"
  msgstr "Použití nástěnky"
  
@@@ -5745,6 -5623,6 +5775,10 @@@ msgstr "
  msgid "Dataset schema is invalid, caused by: %(error)s"
  msgstr "Schéma sady dat je neplatné, způsobeno: %(error)s"
  
++#, python-format
++msgid "Dataset updated: %s"
++msgstr ""
++
  #, python-format
  msgid "Dataset used by %s chart updated: %s"
  msgid_plural "Dataset used by %s charts updated: %s"
@@@ -14555,6 -14360,6 +14637,12 @@@ msgstr "Sémantické pohledy
  msgid "Semantic cache"
  msgstr ""
  
++#, python-format
++msgid ""
++"Semantic dimension '%(name)s' has ambiguous variants for grain "
++"'%(grain)s'. Use one dimension per name and grain."
++msgstr ""
++
  #, fuzzy
  msgid "Semantic layer"
  msgstr "Vrstva anotací"
@@@ -16127,6 -15936,6 +16224,9 @@@ msgstr "
  msgid "Template parameters"
  msgstr "Parametry šablony"
  
++msgid "Template parameters must be a valid JSON object."
++msgstr ""
++
  #, fuzzy, python-format
  msgid "Template processing error: %(error)s"
  msgstr "Chyba při vykonání šablony: %(error)s"
@@@ -16854,15 -16653,9 +16954,18 @@@ msgstr[0] "Parametr %(parameters)s ve v
  msgstr[1] "Následující parametry ve vašem dotazu nejsou definovány: %(parameters)s."
  msgstr[2] "Následující parametry ve vašem dotazu nejsou definovány: %(parameters)s."
  
 +#, python-format
 +msgid ""
 +"The partition column cannot be mapped onto itself. %(name)s is both the "
 +"partition column and the mapped column."
 +msgstr ""
 +
 +msgid "The partition filter mapping was cleared: its column is gone"
 +msgstr ""
 +
+ msgid "The password could not be reset. Please try again."
+ msgstr ""
+ 
  #, python-format
  msgid "The password provided for username \"%(username)s\" is incorrect."
  msgstr "Zadané heslo pro uživatelské jméno „%(username)s“ je nesprávné."
@@@ -18652,9 -18384,9 +18765,12 @@@ msgstr[2] "
  msgid "Token Request URI"
  msgstr "URI žádosti o token"
  
 +msgid "Too many preview requests for this dataset. Wait a moment and try again."
 +msgstr ""
 +
+ msgid "Too many requests. Please wait and try again."
+ msgstr ""
+ 
  # Machine-translated via backfill_po.py (claude-sonnet-4-6) [refs: ja]
  #, fuzzy, python-format
  msgid ""
diff --cc superset/translations/de/LC_MESSAGES/messages.po
index d020ea90738,9ce7efe11fb..f1eed936cc2
--- a/superset/translations/de/LC_MESSAGES/messages.po
+++ b/superset/translations/de/LC_MESSAGES/messages.po
@@@ -18,7 -18,7 +18,7 @@@ msgid "
  msgstr ""
  "Project-Id-Version: PROJECT VERSION\n"
  "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
- "POT-Creation-Date: 2026-10-14 20:29+0000\n"
 -"POT-Creation-Date: 2026-10-16 15:10-0400\n"
++"POT-Creation-Date: 2026-10-19 18:27+0000\n"
  "PO-Revision-Date: 2023-04-07 19:45+0200\n"
  "Last-Translator: Holger Bruch <ho...@wattbewerb.de>\n"
  "Language: de\n"
@@@ -219,6 -219,6 +219,13 @@@ msgstr "% von Gesamtsumme
  msgid "%(alertType)s \"%(alertName)s\" triggered successfully"
  msgstr ""
  
++#, python-format
++msgid ""
++"%(column)s is an array column, which cannot be compared against the "
++"single value a transform returns. Mirrored filters on this mapping would "
++"fail at the database. Map a scalar partition column instead."
++msgstr ""
++
  #, python-format
  msgid "%(count)s %(label)s"
  msgstr ""
@@@ -1166,52 -1110,12 +1173,58 @@@ msgstr "Es wird ein neues Diagramm erst
  msgid "A new dashboard will be created."
  msgstr "Es wird ein neues Dashboard erstellt."
  
 +#, python-format
 +msgid "A partition value transform cannot be longer than %(limit)d characters."
 +msgstr ""
 +
 +#, python-format
 +msgid "A partition value transform cannot call %(functions)s."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform cannot change data. It is evaluated against "
 +"the database to check that it mirrors, so it has to be a read."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform cannot contain a MySQL executable comment, "
 +"which the database executes and every validator reads as a comment."
 +msgstr ""
 +
 +msgid "A partition value transform cannot contain a sub-query."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform cannot name anything through a U&\"...\" "
 +"escape sequence, which the database decodes and every validator reads "
 +"literally."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform cannot read a sequence. NEXTVAL advances the "
 +"sequence every time it is evaluated, and the transform is evaluated on a "
 +"cache schedule."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform must be a single SQL expression, with no "
 +"FROM, WHERE or other clause."
 +msgstr ""
 +
 +msgid "A partition value transform must parse as a single SQL expression."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform must use the :value placeholder where the "
 +"engine will evaluate it, not inside a string literal or a comment."
 +msgstr ""
 +
+ #, python-format
+ msgid ""
+ "A password reset was requested for the %(app_name)s account "
+ "\"%(username)s\"."
+ msgstr ""
+ 
  msgid ""
  "A polar coordinate chart where the circle is broken into wedges of equal "
  "angle, and the value represented by any wedge is illustrated by its area,"
@@@ -3841,6 -3721,6 +3857,10 @@@ msgstr "Diagrammtitel
  msgid "Chart type"
  msgstr "Diagrammtyp"
  
++#, python-format
++msgid "Chart updated: %s"
++msgstr ""
++
  msgid "Chart was saved but could not be added to the selected tab."
  msgstr ""
  "Das Diagramm wurde gespeichert, konnte jedoch nicht zur ausgewählten "
@@@ -5424,6 -5302,6 +5450,10 @@@ msgstr "Dashboard Titel
  msgid "Dashboard updated %s"
  msgstr "Dashboard aktualisiert %s"
  
++#, python-format
++msgid "Dashboard updated: %s"
++msgstr ""
++
  msgid "Dashboard usage"
  msgstr "Dashboard-Nutzung"
  
@@@ -5666,6 -5544,6 +5696,10 @@@ msgstr "
  msgid "Dataset schema is invalid, caused by: %(error)s"
  msgstr "Das Datensatzschema ist ungültig, verursacht durch: %(error)s"
  
++#, python-format
++msgid "Dataset updated: %s"
++msgstr ""
++
  #, python-format
  msgid "Dataset used by %s chart updated: %s"
  msgid_plural "Dataset used by %s charts updated: %s"
@@@ -14199,6 -14004,6 +14281,12 @@@ msgstr "Semantische Sichten
  msgid "Semantic cache"
  msgstr ""
  
++#, python-format
++msgid ""
++"Semantic dimension '%(name)s' has ambiguous variants for grain "
++"'%(grain)s'. Use one dimension per name and grain."
++msgstr ""
++
  msgid "Semantic layer"
  msgstr "Semantische Schicht"
  
@@@ -15707,6 -15516,6 +15804,9 @@@ msgstr "
  msgid "Template parameters"
  msgstr "Vorlagen-Parameter"
  
++msgid "Template parameters must be a valid JSON object."
++msgstr ""
++
  #, python-format
  msgid "Template processing error: %(error)s"
  msgstr "Fehler bei der Verarbeitung der Vorlage: %(error)s"
@@@ -16464,15 -16263,9 +16564,18 @@@ msgstr[1] "
  "Die folgenden Parameter in Ihrer Abfrage sind nicht definiert: "
  "%(parameters)s."
  
 +#, python-format
 +msgid ""
 +"The partition column cannot be mapped onto itself. %(name)s is both the "
 +"partition column and the mapped column."
 +msgstr ""
 +
 +msgid "The partition filter mapping was cleared: its column is gone"
 +msgstr ""
 +
+ msgid "The password could not be reset. Please try again."
+ msgstr ""
+ 
  #, python-format
  msgid "The password provided for username \"%(username)s\" is incorrect."
  msgstr "Das für den Anmeldenamen \"%(username)s\" angegebene Kennwort ist falsch."
@@@ -18287,9 -18019,9 +18400,12 @@@ msgstr[1] "
  msgid "Token Request URI"
  msgstr "URI für die Token-Anfrage"
  
 +msgid "Too many preview requests for this dataset. Wait a moment and try again."
 +msgstr ""
 +
+ msgid "Too many requests. Please wait and try again."
+ msgstr ""
+ 
  # Machine-translated via backfill_po.py (claude-sonnet-4-6) [refs: ja]
  #, fuzzy, python-format
  msgid ""
diff --cc superset/translations/en/LC_MESSAGES/messages.po
index c21c6ad6a6c,8ed5a76104a..aaad85a7dd1
--- a/superset/translations/en/LC_MESSAGES/messages.po
+++ b/superset/translations/en/LC_MESSAGES/messages.po
@@@ -17,7 -17,7 +17,7 @@@ msgid "
  msgstr ""
  "Project-Id-Version: PROJECT VERSION\n"
  "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
- "POT-Creation-Date: 2026-10-14 20:29+0000\n"
 -"POT-Creation-Date: 2026-10-16 15:10-0400\n"
++"POT-Creation-Date: 2026-10-19 18:27+0000\n"
  "PO-Revision-Date: 2016-05-02 08:49-0700\n"
  "Last-Translator: FULL NAME <EM...@ADDRESS>\n"
  "Language: en\n"
@@@ -195,6 -195,6 +195,13 @@@ msgstr "
  msgid "%(alertType)s \"%(alertName)s\" triggered successfully"
  msgstr ""
  
++#, python-format
++msgid ""
++"%(column)s is an array column, which cannot be compared against the "
++"single value a transform returns. Mirrored filters on this mapping would "
++"fail at the database. Map a scalar partition column instead."
++msgstr ""
++
  #, python-format
  msgid "%(count)s %(label)s"
  msgstr ""
@@@ -1080,52 -1024,12 +1087,58 @@@ msgstr "
  msgid "A new dashboard will be created."
  msgstr ""
  
 +#, python-format
 +msgid "A partition value transform cannot be longer than %(limit)d characters."
 +msgstr ""
 +
 +#, python-format
 +msgid "A partition value transform cannot call %(functions)s."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform cannot change data. It is evaluated against "
 +"the database to check that it mirrors, so it has to be a read."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform cannot contain a MySQL executable comment, "
 +"which the database executes and every validator reads as a comment."
 +msgstr ""
 +
 +msgid "A partition value transform cannot contain a sub-query."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform cannot name anything through a U&\"...\" "
 +"escape sequence, which the database decodes and every validator reads "
 +"literally."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform cannot read a sequence. NEXTVAL advances the "
 +"sequence every time it is evaluated, and the transform is evaluated on a "
 +"cache schedule."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform must be a single SQL expression, with no "
 +"FROM, WHERE or other clause."
 +msgstr ""
 +
 +msgid "A partition value transform must parse as a single SQL expression."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform must use the :value placeholder where the "
 +"engine will evaluate it, not inside a string literal or a comment."
 +msgstr ""
 +
+ #, python-format
+ msgid ""
+ "A password reset was requested for the %(app_name)s account "
+ "\"%(username)s\"."
+ msgstr ""
+ 
  msgid ""
  "A polar coordinate chart where the circle is broken into wedges of equal "
  "angle, and the value represented by any wedge is illustrated by its area,"
@@@ -3531,6 -3411,6 +3547,10 @@@ msgstr "
  msgid "Chart type"
  msgstr ""
  
++#, python-format
++msgid "Chart updated: %s"
++msgstr ""
++
  msgid "Chart was saved but could not be added to the selected tab."
  msgstr ""
  
@@@ -5003,6 -4881,6 +5029,10 @@@ msgstr "
  msgid "Dashboard updated %s"
  msgstr ""
  
++#, python-format
++msgid "Dashboard updated: %s"
++msgstr ""
++
  msgid "Dashboard usage"
  msgstr ""
  
@@@ -5227,6 -5105,6 +5257,10 @@@ msgstr "
  msgid "Dataset schema is invalid, caused by: %(error)s"
  msgstr ""
  
++#, python-format
++msgid "Dataset updated: %s"
++msgstr ""
++
  #, python-format
  msgid "Dataset used by %s chart updated: %s"
  msgid_plural "Dataset used by %s charts updated: %s"
@@@ -13266,6 -13071,6 +13348,12 @@@ msgstr "
  msgid "Semantic cache"
  msgstr ""
  
++#, python-format
++msgid ""
++"Semantic dimension '%(name)s' has ambiguous variants for grain "
++"'%(grain)s'. Use one dimension per name and grain."
++msgstr ""
++
  msgid "Semantic layer"
  msgstr ""
  
@@@ -14681,6 -14490,6 +14778,9 @@@ msgstr "
  msgid "Template parameters"
  msgstr ""
  
++msgid "Template parameters must be a valid JSON object."
++msgstr ""
++
  #, python-format
  msgid "Template processing error: %(error)s"
  msgstr ""
@@@ -15286,15 -15085,9 +15386,18 @@@ msgid_plural "The following parameters 
  msgstr[0] ""
  msgstr[1] ""
  
 +#, python-format
 +msgid ""
 +"The partition column cannot be mapped onto itself. %(name)s is both the "
 +"partition column and the mapped column."
 +msgstr ""
 +
 +msgid "The partition filter mapping was cleared: its column is gone"
 +msgstr ""
 +
+ msgid "The password could not be reset. Please try again."
+ msgstr ""
+ 
  #, python-format
  msgid "The password provided for username \"%(username)s\" is incorrect."
  msgstr ""
@@@ -16842,9 -16574,9 +16955,12 @@@ msgstr[1] "
  msgid "Token Request URI"
  msgstr ""
  
 +msgid "Too many preview requests for this dataset. Wait a moment and try again."
 +msgstr ""
 +
+ msgid "Too many requests. Please wait and try again."
+ msgstr ""
+ 
  #, python-format
  msgid ""
  "Too many sub-slices requested. The maximum allowed is %(max)s, but "
diff --cc superset/translations/es/LC_MESSAGES/messages.po
index 12595c8e51a,4f2045017e6..3e49b26e99c
--- a/superset/translations/es/LC_MESSAGES/messages.po
+++ b/superset/translations/es/LC_MESSAGES/messages.po
@@@ -17,7 -17,7 +17,7 @@@ msgid "
  msgstr ""
  "Project-Id-Version: PROJECT VERSION\n"
  "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
- "POT-Creation-Date: 2026-10-14 20:29+0000\n"
 -"POT-Creation-Date: 2026-10-16 15:10-0400\n"
++"POT-Creation-Date: 2026-10-19 18:27+0000\n"
  "PO-Revision-Date: 2016-05-02 08:49-0700\n"
  "Last-Translator: FULL NAME <EM...@ADDRESS>\n"
  "Language: es\n"
@@@ -231,6 -231,6 +231,13 @@@ msgstr "% del total
  msgid "%(alertType)s \"%(alertName)s\" triggered successfully"
  msgstr ""
  
++#, python-format
++msgid ""
++"%(column)s is an array column, which cannot be compared against the "
++"single value a transform returns. Mirrored filters on this mapping would "
++"fail at the database. Map a scalar partition column instead."
++msgstr ""
++
  #, python-format
  msgid "%(count)s %(label)s"
  msgstr ""
@@@ -1189,52 -1133,12 +1196,58 @@@ msgstr "Se creará un nuevo gráfico.
  msgid "A new dashboard will be created."
  msgstr "Se creará un nuevo panel de control."
  
 +#, python-format
 +msgid "A partition value transform cannot be longer than %(limit)d characters."
 +msgstr ""
 +
 +#, python-format
 +msgid "A partition value transform cannot call %(functions)s."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform cannot change data. It is evaluated against "
 +"the database to check that it mirrors, so it has to be a read."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform cannot contain a MySQL executable comment, "
 +"which the database executes and every validator reads as a comment."
 +msgstr ""
 +
 +msgid "A partition value transform cannot contain a sub-query."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform cannot name anything through a U&\"...\" "
 +"escape sequence, which the database decodes and every validator reads "
 +"literally."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform cannot read a sequence. NEXTVAL advances the "
 +"sequence every time it is evaluated, and the transform is evaluated on a "
 +"cache schedule."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform must be a single SQL expression, with no "
 +"FROM, WHERE or other clause."
 +msgstr ""
 +
 +msgid "A partition value transform must parse as a single SQL expression."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform must use the :value placeholder where the "
 +"engine will evaluate it, not inside a string literal or a comment."
 +msgstr ""
 +
+ #, python-format
+ msgid ""
+ "A password reset was requested for the %(app_name)s account "
+ "\"%(username)s\"."
+ msgstr ""
+ 
  msgid ""
  "A polar coordinate chart where the circle is broken into wedges of equal "
  "angle, and the value represented by any wedge is illustrated by its area,"
@@@ -3974,6 -3854,6 +3990,10 @@@ msgstr "Título del gráfico
  msgid "Chart type"
  msgstr "Título del gráfico"
  
++#, python-format
++msgid "Chart updated: %s"
++msgstr ""
++
  #, fuzzy
  msgid "Chart was saved but could not be added to the selected tab."
  msgstr "No se han podido eliminar los gráficos."
@@@ -5627,6 -5505,6 +5653,10 @@@ msgstr "Titulo del panel de control
  msgid "Dashboard updated %s"
  msgstr "Última actualización %s"
  
++#, python-format
++msgid "Dashboard updated: %s"
++msgstr ""
++
  msgid "Dashboard usage"
  msgstr "Uso del panel de control"
  
@@@ -5872,6 -5750,6 +5902,10 @@@ msgstr "
  msgid "Dataset schema is invalid, caused by: %(error)s"
  msgstr "El esquema del conjunto de datos no es válido, debido a: %(error)s"
  
++#, python-format
++msgid "Dataset updated: %s"
++msgstr ""
++
  #, python-format
  msgid "Dataset used by %s chart updated: %s"
  msgid_plural "Dataset used by %s charts updated: %s"
@@@ -14895,6 -14700,6 +14977,12 @@@ msgstr "Vistas semánticas
  msgid "Semantic cache"
  msgstr ""
  
++#, python-format
++msgid ""
++"Semantic dimension '%(name)s' has ambiguous variants for grain "
++"'%(grain)s'. Use one dimension per name and grain."
++msgstr ""
++
  msgid "Semantic layer"
  msgstr "Capa semántica"
  
@@@ -16512,6 -16321,6 +16609,9 @@@ msgstr "
  msgid "Template parameters"
  msgstr "Parámetros de plantilla"
  
++msgid "Template parameters must be a valid JSON object."
++msgstr ""
++
  #, fuzzy, python-format
  msgid "Template processing error: %(error)s"
  msgstr "Error de análisis: %(error)s"
@@@ -17292,15 -17091,9 +17392,18 @@@ msgstr[1] "
  "Los siguientes parámetros de tu consulta no están definidos: "
  "%(parameters)s."
  
 +#, python-format
 +msgid ""
 +"The partition column cannot be mapped onto itself. %(name)s is both the "
 +"partition column and the mapped column."
 +msgstr ""
 +
 +msgid "The partition filter mapping was cleared: its column is gone"
 +msgstr ""
 +
+ msgid "The password could not be reset. Please try again."
+ msgstr ""
+ 
  #, python-format
  msgid "The password provided for username \"%(username)s\" is incorrect."
  msgstr ""
@@@ -19191,9 -18923,9 +19304,12 @@@ msgstr[1] "
  msgid "Token Request URI"
  msgstr "URI de solicitud de token"
  
 +msgid "Too many preview requests for this dataset. Wait a moment and try again."
 +msgstr ""
 +
+ msgid "Too many requests. Please wait and try again."
+ msgstr ""
+ 
  # Machine-translated via backfill_po.py (claude-sonnet-4-6) [refs: ja]
  #, fuzzy, python-format
  msgid ""
diff --cc superset/translations/fa/LC_MESSAGES/messages.po
index 8004cf4ed6c,7463e743207..da4deda75d5
--- a/superset/translations/fa/LC_MESSAGES/messages.po
+++ b/superset/translations/fa/LC_MESSAGES/messages.po
@@@ -21,7 -21,7 +21,7 @@@ msgid "
  msgstr ""
  "Project-Id-Version: Superset VERSION\n"
  "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
- "POT-Creation-Date: 2026-10-14 20:29+0000\n"
 -"POT-Creation-Date: 2026-10-16 15:10-0400\n"
++"POT-Creation-Date: 2026-10-19 18:27+0000\n"
  "PO-Revision-Date: 2024-10-20 00:07+0330\n"
  "Last-Translator: Emad Rad <co...@gmail.com>\n"
  "Language: fa\n"
@@@ -232,6 -232,6 +232,13 @@@ msgstr "% از کل
  msgid "%(alertType)s \"%(alertName)s\" triggered successfully"
  msgstr ""
  
++#, python-format
++msgid ""
++"%(column)s is an array column, which cannot be compared against the "
++"single value a transform returns. Mirrored filters on this mapping would "
++"fail at the database. Map a scalar partition column instead."
++msgstr ""
++
  #, python-format
  msgid "%(count)s %(label)s"
  msgstr ""
@@@ -1215,52 -1159,12 +1222,58 @@@ msgstr "یک نمودار جدید ای
  msgid "A new dashboard will be created."
  msgstr "یک داشبورد جدید ایجاد خواهد شد."
  
 +#, python-format
 +msgid "A partition value transform cannot be longer than %(limit)d characters."
 +msgstr ""
 +
 +#, python-format
 +msgid "A partition value transform cannot call %(functions)s."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform cannot change data. It is evaluated against "
 +"the database to check that it mirrors, so it has to be a read."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform cannot contain a MySQL executable comment, "
 +"which the database executes and every validator reads as a comment."
 +msgstr ""
 +
 +msgid "A partition value transform cannot contain a sub-query."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform cannot name anything through a U&\"...\" "
 +"escape sequence, which the database decodes and every validator reads "
 +"literally."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform cannot read a sequence. NEXTVAL advances the "
 +"sequence every time it is evaluated, and the transform is evaluated on a "
 +"cache schedule."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform must be a single SQL expression, with no "
 +"FROM, WHERE or other clause."
 +msgstr ""
 +
 +msgid "A partition value transform must parse as a single SQL expression."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform must use the :value placeholder where the "
 +"engine will evaluate it, not inside a string literal or a comment."
 +msgstr ""
 +
+ #, python-format
+ msgid ""
+ "A password reset was requested for the %(app_name)s account "
+ "\"%(username)s\"."
+ msgstr ""
+ 
  msgid ""
  "A polar coordinate chart where the circle is broken into wedges of equal "
  "angle, and the value represented by any wedge is illustrated by its area,"
@@@ -4015,6 -3895,6 +4031,10 @@@ msgstr "عنوان نمودار
  msgid "Chart type"
  msgstr "عنوان نمودار"
  
++#, python-format
++msgid "Chart updated: %s"
++msgstr ""
++
  #, fuzzy
  msgid "Chart was saved but could not be added to the selected tab."
  msgstr "نمودارها نمی‌توانند حذف شوند."
@@@ -5703,6 -5581,6 +5729,10 @@@ msgstr "عنوان داشبورد
  msgid "Dashboard updated %s"
  msgstr "آخرین بروزرسانی %s"
  
++#, python-format
++msgid "Dashboard updated: %s"
++msgstr ""
++
  msgid "Dashboard usage"
  msgstr "استفاده از داشبورد"
  
@@@ -5950,6 -5828,6 +5980,10 @@@ msgstr "
  msgid "Dataset schema is invalid, caused by: %(error)s"
  msgstr "طرح داده نادرست است، به دلیل: %(error)s"
  
++#, python-format
++msgid "Dataset updated: %s"
++msgstr ""
++
  #, python-format
  msgid "Dataset used by %s chart updated: %s"
  msgid_plural "Dataset used by %s charts updated: %s"
@@@ -15107,6 -14912,6 +15189,12 @@@ msgstr "نماهای معنایی
  msgid "Semantic cache"
  msgstr ""
  
++#, python-format
++msgid ""
++"Semantic dimension '%(name)s' has ambiguous variants for grain "
++"'%(grain)s'. Use one dimension per name and grain."
++msgstr ""
++
  #, fuzzy
  msgid "Semantic layer"
  msgstr "لایه توضیحی"
@@@ -16762,6 -16571,6 +16859,9 @@@ msgstr "
  msgid "Template parameters"
  msgstr "پارامترهای الگو"
  
++msgid "Template parameters must be a valid JSON object."
++msgstr ""
++
  #, fuzzy, python-format
  msgid "Template processing error: %(error)s"
  msgstr "خطای تجزیه: %(error)s"
@@@ -17524,15 -17323,9 +17624,18 @@@ msgid_plural "The following parameters 
  msgstr[0] "پارامتر %(parameters)s در پرسش شما تعریف نشده است."
  msgstr[1] "پارامترهای زیر در پرسش شما تعریف نشده‌اند: %(parameters)s."
  
 +#, python-format
 +msgid ""
 +"The partition column cannot be mapped onto itself. %(name)s is both the "
 +"partition column and the mapped column."
 +msgstr ""
 +
 +msgid "The partition filter mapping was cleared: its column is gone"
 +msgstr ""
 +
+ msgid "The password could not be reset. Please try again."
+ msgstr ""
+ 
  #, python-format
  msgid "The password provided for username \"%(username)s\" is incorrect."
  msgstr "رمز عبور ارائه شده برای نام کاربری \"%(username)s\" نادرست است."
@@@ -19410,9 -19142,9 +19523,12 @@@ msgstr[1] "
  msgid "Token Request URI"
  msgstr "URI درخواست توکن"
  
 +msgid "Too many preview requests for this dataset. Wait a moment and try again."
 +msgstr ""
 +
+ msgid "Too many requests. Please wait and try again."
+ msgstr ""
+ 
  # Machine-translated via backfill_po.py (claude-sonnet-4-6) [refs: ja]
  #, fuzzy, python-format
  msgid ""
diff --cc superset/translations/fi/LC_MESSAGES/messages.po
index cd6614716ff,b9816ea387e..ae0e8c5df9a
--- a/superset/translations/fi/LC_MESSAGES/messages.po
+++ b/superset/translations/fi/LC_MESSAGES/messages.po
@@@ -17,7 -17,7 +17,7 @@@ msgid "
  msgstr ""
  "Project-Id-Version: Superset VERSION\n"
  "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
- "POT-Creation-Date: 2026-10-14 20:29+0000\n"
 -"POT-Creation-Date: 2026-10-16 15:10-0400\n"
++"POT-Creation-Date: 2026-10-19 18:27+0000\n"
  "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
  "Last-Translator: FULL NAME <EM...@ADDRESS>\n"
  "Language: fi\n"
@@@ -288,6 -288,6 +288,13 @@@ msgstr "% kokonaismäärästä
  msgid "%(alertType)s \"%(alertName)s\" triggered successfully"
  msgstr ""
  
++#, python-format
++msgid ""
++"%(column)s is an array column, which cannot be compared against the "
++"single value a transform returns. Mirrored filters on this mapping would "
++"fail at the database. Map a scalar partition column instead."
++msgstr ""
++
  #, python-format
  msgid "%(count)s %(label)s"
  msgstr ""
@@@ -1672,52 -1616,12 +1679,58 @@@ msgstr "Uusi kaavio luodaan.
  msgid "A new dashboard will be created."
  msgstr "Uusi koontinäyttö luodaan."
  
 +#, python-format
 +msgid "A partition value transform cannot be longer than %(limit)d characters."
 +msgstr ""
 +
 +#, python-format
 +msgid "A partition value transform cannot call %(functions)s."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform cannot change data. It is evaluated against "
 +"the database to check that it mirrors, so it has to be a read."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform cannot contain a MySQL executable comment, "
 +"which the database executes and every validator reads as a comment."
 +msgstr ""
 +
 +msgid "A partition value transform cannot contain a sub-query."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform cannot name anything through a U&\"...\" "
 +"escape sequence, which the database decodes and every validator reads "
 +"literally."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform cannot read a sequence. NEXTVAL advances the "
 +"sequence every time it is evaluated, and the transform is evaluated on a "
 +"cache schedule."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform must be a single SQL expression, with no "
 +"FROM, WHERE or other clause."
 +msgstr ""
 +
 +msgid "A partition value transform must parse as a single SQL expression."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform must use the :value placeholder where the "
 +"engine will evaluate it, not inside a string literal or a comment."
 +msgstr ""
 +
+ #, python-format
+ msgid ""
+ "A password reset was requested for the %(app_name)s account "
+ "\"%(username)s\"."
+ msgstr ""
+ 
  msgid ""
  "A polar coordinate chart where the circle is broken into wedges of equal "
  "angle, and the value represented by any wedge is illustrated by its area,"
@@@ -6086,6 -5966,6 +6102,10 @@@ msgstr "Kaavion otsikko
  msgid "Chart type"
  msgstr "Kaavion tyyppi"
  
++#, python-format
++msgid "Chart updated: %s"
++msgstr ""
++
  # Machine-translated via backfill_po.py (claude-sonnet-4-6) [refs: fr, ja, lv,
  # ru, uk]
  #, fuzzy
@@@ -8717,6 -8595,6 +8743,10 @@@ msgstr "Kojelautan otsikko
  msgid "Dashboard updated %s"
  msgstr "Päivitetty viimeksi %s"
  
++#, python-format
++msgid "Dashboard updated: %s"
++msgstr ""
++
  # Machine-translated via backfill_po.py (claude-sonnet-4-6) [refs: ar, ca, cs,
  # de, es, fa, fr, ja, lv, mi, nl, pt_BR, ru, sk, sl, uk]
  #, fuzzy
@@@ -9168,6 -9046,6 +9198,10 @@@ msgstr "
  msgid "Dataset schema is invalid, caused by: %(error)s"
  msgstr "Tietojoukon rakenne on virheellinen, syy: %(error)s"
  
++#, python-format
++msgid "Dataset updated: %s"
++msgstr ""
++
  #, python-format
  msgid "Dataset used by %s chart updated: %s"
  msgid_plural "Dataset used by %s charts updated: %s"
@@@ -23576,6 -23381,6 +23658,12 @@@ msgstr "Semanttiset näkymät
  msgid "Semantic cache"
  msgstr ""
  
++#, python-format
++msgid ""
++"Semantic dimension '%(name)s' has ambiguous variants for grain "
++"'%(grain)s'. Use one dimension per name and grain."
++msgstr ""
++
  # Machine-translated via backfill_po.py (claude-sonnet-4-6) [refs: ar, ca, cs,
  # de, es, fa, fr, it, ja, ko, lv, mi, nl, pl, pt_BR, ru, sk, sl, uk, zh,
  # zh_TW]
@@@ -26157,6 -25966,6 +26254,9 @@@ msgstr "
  msgid "Template parameters"
  msgstr "Malliparametrit"
  
++msgid "Template parameters must be a valid JSON object."
++msgstr ""
++
  # Machine-translated via backfill_po.py (claude-sonnet-4-6) [refs: ja, lv, ru,
  # uk]
  #, fuzzy, python-format
@@@ -27202,15 -27001,9 +27302,18 @@@ msgid_plural "The following parameters 
  msgstr[0] "Parametri %(parameters)s kyselyssäsi on määrittelemätön."
  msgstr[1] "Seuraavat parametrit kyselyssäsi ovat määrittelemättömiä: %(parameters)s."
  
 +#, python-format
 +msgid ""
 +"The partition column cannot be mapped onto itself. %(name)s is both the "
 +"partition column and the mapped column."
 +msgstr ""
 +
 +msgid "The partition filter mapping was cleared: its column is gone"
 +msgstr ""
 +
+ msgid "The password could not be reset. Please try again."
+ msgstr ""
+ 
  # Machine-translated via backfill_po.py (claude-sonnet-4-6) [refs: ar, ca, cs,
  # de, es, fa, fr, ja, lv, mi, nl, pl, pt_BR, ru, sk, sl, uk, zh, zh_TW]
  #, fuzzy, python-format
@@@ -29797,9 -29529,9 +29910,12 @@@ msgstr[1] "
  msgid "Token Request URI"
  msgstr "Tunnuspyyntö-URI"
  
 +msgid "Too many preview requests for this dataset. Wait a moment and try again."
 +msgstr ""
 +
+ msgid "Too many requests. Please wait and try again."
+ msgstr ""
+ 
  # Machine-translated via backfill_po.py (claude-sonnet-4-6) [refs: ja]
  #, fuzzy, python-format
  msgid ""
diff --cc superset/translations/fr/LC_MESSAGES/messages.po
index 2ef8f79be83,c6143367d34..215a9f0553e
--- a/superset/translations/fr/LC_MESSAGES/messages.po
+++ b/superset/translations/fr/LC_MESSAGES/messages.po
@@@ -17,7 -17,7 +17,7 @@@ msgid "
  msgstr ""
  "Project-Id-Version: PROJECT VERSION\n"
  "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
- "POT-Creation-Date: 2026-10-14 20:29+0000\n"
 -"POT-Creation-Date: 2026-10-16 15:10-0400\n"
++"POT-Creation-Date: 2026-10-19 18:27+0000\n"
  "PO-Revision-Date: 2025-06-26 15:34+0200\n"
  "Last-Translator: \n"
  "Language: fr\n"
@@@ -233,6 -233,6 +233,13 @@@ msgstr "% du total
  msgid "%(alertType)s \"%(alertName)s\" triggered successfully"
  msgstr "%(alertType)s « %(alertName)s » déclenché avec succès"
  
++#, python-format
++msgid ""
++"%(column)s is an array column, which cannot be compared against the "
++"single value a transform returns. Mirrored filters on this mapping would "
++"fail at the database. Map a scalar partition column instead."
++msgstr ""
++
  #, python-format
  msgid "%(count)s %(label)s"
  msgstr ""
@@@ -1188,52 -1132,12 +1195,58 @@@ msgstr "Un nouveau graphique va être c
  msgid "A new dashboard will be created."
  msgstr "Un nouveau tableau de bord va être créé."
  
 +#, python-format
 +msgid "A partition value transform cannot be longer than %(limit)d characters."
 +msgstr ""
 +
 +#, python-format
 +msgid "A partition value transform cannot call %(functions)s."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform cannot change data. It is evaluated against "
 +"the database to check that it mirrors, so it has to be a read."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform cannot contain a MySQL executable comment, "
 +"which the database executes and every validator reads as a comment."
 +msgstr ""
 +
 +msgid "A partition value transform cannot contain a sub-query."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform cannot name anything through a U&\"...\" "
 +"escape sequence, which the database decodes and every validator reads "
 +"literally."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform cannot read a sequence. NEXTVAL advances the "
 +"sequence every time it is evaluated, and the transform is evaluated on a "
 +"cache schedule."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform must be a single SQL expression, with no "
 +"FROM, WHERE or other clause."
 +msgstr ""
 +
 +msgid "A partition value transform must parse as a single SQL expression."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform must use the :value placeholder where the "
 +"engine will evaluate it, not inside a string literal or a comment."
 +msgstr ""
 +
+ #, python-format
+ msgid ""
+ "A password reset was requested for the %(app_name)s account "
+ "\"%(username)s\"."
+ msgstr ""
+ 
  msgid ""
  "A polar coordinate chart where the circle is broken into wedges of equal "
  "angle, and the value represented by any wedge is illustrated by its area,"
@@@ -3906,6 -3786,6 +3922,10 @@@ msgstr "Titre du graphique
  msgid "Chart type"
  msgstr "Type de graphique"
  
++#, python-format
++msgid "Chart updated: %s"
++msgstr ""
++
  msgid "Chart was saved but could not be added to the selected tab."
  msgstr ""
  "Le graphique a été enregistré mais n'a pu être ajouté à l'knglet "
@@@ -5505,6 -5383,6 +5531,10 @@@ msgstr "Titre du tableau de bord
  msgid "Dashboard updated %s"
  msgstr "Tableau de bord mis à jour %s"
  
++#, python-format
++msgid "Dashboard updated: %s"
++msgstr ""
++
  msgid "Dashboard usage"
  msgstr "Utilisation du tableau de bord"
  
@@@ -5746,6 -5624,6 +5776,10 @@@ msgstr "
  msgid "Dataset schema is invalid, caused by: %(error)s"
  msgstr "Le schéma du jeu de données n'est pas valide : %(error)s"
  
++#, python-format
++msgid "Dataset updated: %s"
++msgstr ""
++
  #, python-format
  msgid "Dataset used by %s chart updated: %s"
  msgid_plural "Dataset used by %s charts updated: %s"
@@@ -14438,6 -14243,6 +14520,12 @@@ msgstr "Vues sémantiques
  msgid "Semantic cache"
  msgstr ""
  
++#, python-format
++msgid ""
++"Semantic dimension '%(name)s' has ambiguous variants for grain "
++"'%(grain)s'. Use one dimension per name and grain."
++msgstr ""
++
  msgid "Semantic layer"
  msgstr "Couche sémantique"
  
@@@ -15985,6 -15794,6 +16082,9 @@@ msgstr "
  msgid "Template parameters"
  msgstr "Paramètres du modèle"
  
++msgid "Template parameters must be a valid JSON object."
++msgstr ""
++
  #, python-format
  msgid "Template processing error: %(error)s"
  msgstr "Erreur lors du traitement du modèle : %(error)s"
@@@ -16756,15 -16555,9 +16856,18 @@@ msgid_plural "The following parameters 
  msgstr[0] "Le paramètre %(parameters)s de votre requête est indéfini."
  msgstr[1] "Les paramètres suivants de votre requête sont indéfinis : %(parameters)s."
  
 +#, python-format
 +msgid ""
 +"The partition column cannot be mapped onto itself. %(name)s is both the "
 +"partition column and the mapped column."
 +msgstr ""
 +
 +msgid "The partition filter mapping was cleared: its column is gone"
 +msgstr ""
 +
+ msgid "The password could not be reset. Please try again."
+ msgstr ""
+ 
  #, python-format
  msgid "The password provided for username \"%(username)s\" is incorrect."
  msgstr "Le mot de passe fourni pour l'utilisateur « %(username)s » est incorrect."
@@@ -18620,9 -18352,9 +18733,12 @@@ msgstr[1] "
  msgid "Token Request URI"
  msgstr "URL de requête du Token"
  
 +msgid "Too many preview requests for this dataset. Wait a moment and try again."
 +msgstr ""
 +
+ msgid "Too many requests. Please wait and try again."
+ msgstr ""
+ 
  # Machine-translated via backfill_po.py (claude-sonnet-4-6) [refs: ja]
  #, python-format
  msgid ""
diff --cc superset/translations/it/LC_MESSAGES/messages.po
index 6ff3927bb23,7630b72edce..6a2c66da0bd
--- a/superset/translations/it/LC_MESSAGES/messages.po
+++ b/superset/translations/it/LC_MESSAGES/messages.po
@@@ -17,7 -17,7 +17,7 @@@ msgid "
  msgstr ""
  "Project-Id-Version: PROJECT VERSION\n"
  "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
- "POT-Creation-Date: 2026-10-14 20:29+0000\n"
 -"POT-Creation-Date: 2026-10-16 15:10-0400\n"
++"POT-Creation-Date: 2026-10-19 18:27+0000\n"
  "PO-Revision-Date: 2018-02-11 22:26+0200\n"
  "Last-Translator: Raffaele Spangaro <ra...@raffaelespangaro.it>\n"
  "Language: it\n"
@@@ -246,6 -246,6 +246,13 @@@ msgstr "% del totale
  msgid "%(alertType)s \"%(alertName)s\" triggered successfully"
  msgstr "%(alertType)s \"%(alertName)s\" attivato con successo"
  
++#, python-format
++msgid ""
++"%(column)s is an array column, which cannot be compared against the "
++"single value a transform returns. Mirrored filters on this mapping would "
++"fail at the database. Map a scalar partition column instead."
++msgstr ""
++
  #, python-format
  msgid "%(count)s %(label)s"
  msgstr ""
@@@ -1421,52 -1365,12 +1428,58 @@@ msgstr "Sarà creato un nuovo grafico.
  msgid "A new dashboard will be created."
  msgstr "Una nuova dashboard sarà creata."
  
 +#, python-format
 +msgid "A partition value transform cannot be longer than %(limit)d characters."
 +msgstr ""
 +
 +#, python-format
 +msgid "A partition value transform cannot call %(functions)s."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform cannot change data. It is evaluated against "
 +"the database to check that it mirrors, so it has to be a read."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform cannot contain a MySQL executable comment, "
 +"which the database executes and every validator reads as a comment."
 +msgstr ""
 +
 +msgid "A partition value transform cannot contain a sub-query."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform cannot name anything through a U&\"...\" "
 +"escape sequence, which the database decodes and every validator reads "
 +"literally."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform cannot read a sequence. NEXTVAL advances the "
 +"sequence every time it is evaluated, and the transform is evaluated on a "
 +"cache schedule."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform must be a single SQL expression, with no "
 +"FROM, WHERE or other clause."
 +msgstr ""
 +
 +msgid "A partition value transform must parse as a single SQL expression."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform must use the :value placeholder where the "
 +"engine will evaluate it, not inside a string literal or a comment."
 +msgstr ""
 +
+ #, python-format
+ msgid ""
+ "A password reset was requested for the %(app_name)s account "
+ "\"%(username)s\"."
+ msgstr ""
+ 
  msgid ""
  "A polar coordinate chart where the circle is broken into wedges of equal "
  "angle, and the value represented by any wedge is illustrated by its area,"
@@@ -4668,6 -4548,6 +4684,10 @@@ msgstr "Titolo grafico
  msgid "Chart type"
  msgstr "Tipo grafico"
  
++#, python-format
++msgid "Chart updated: %s"
++msgstr ""
++
  msgid "Chart was saved but could not be added to the selected tab."
  msgstr "Il grafico è stato salvato ma non può essere aggiunto al tab selezionato."
  
@@@ -6677,6 -6555,6 +6703,10 @@@ msgstr "Titolo dashboard
  msgid "Dashboard updated %s"
  msgstr "Dashboard aggiornata %s"
  
++#, python-format
++msgid "Dashboard updated: %s"
++msgstr ""
++
  msgid "Dashboard usage"
  msgstr "Utilizzo dashboard"
  
@@@ -6962,6 -6840,6 +6992,10 @@@ msgstr "
  msgid "Dataset schema is invalid, caused by: %(error)s"
  msgstr "Lo schema del set di dati non è valido, causato da: %(error)s"
  
++#, python-format
++msgid "Dataset updated: %s"
++msgstr ""
++
  #, python-format
  msgid "Dataset used by %s chart updated: %s"
  msgid_plural "Dataset used by %s charts updated: %s"
@@@ -17764,6 -17569,6 +17846,12 @@@ msgstr "Viste semantiche
  msgid "Semantic cache"
  msgstr ""
  
++#, python-format
++msgid ""
++"Semantic dimension '%(name)s' has ambiguous variants for grain "
++"'%(grain)s'. Use one dimension per name and grain."
++msgstr ""
++
  msgid "Semantic layer"
  msgstr "Livello semantico"
  
@@@ -19676,6 -19485,6 +19773,9 @@@ msgstr "
  msgid "Template parameters"
  msgstr "Parametri template"
  
++msgid "Template parameters must be a valid JSON object."
++msgstr ""
++
  # Machine-translated via backfill_po.py (claude-sonnet-4-6) [refs: de, ja, lv,
  # ro, ru, sr, sr_Latn, uk]
  #, python-format
@@@ -20593,15 -20392,9 +20693,18 @@@ msgid_plural "The following parameters 
  msgstr[0] "Il parametro %(parameters)s nella query non è definito."
  msgstr[1] "I seguenti parametri nella query non sono definiti: %(parameters)s."
  
 +#, python-format
 +msgid ""
 +"The partition column cannot be mapped onto itself. %(name)s is both the "
 +"partition column and the mapped column."
 +msgstr ""
 +
 +msgid "The partition filter mapping was cleared: its column is gone"
 +msgstr ""
 +
+ msgid "The password could not be reset. Please try again."
+ msgstr ""
+ 
  # Machine-translated via backfill_po.py (claude-sonnet-4-6) [refs: ar, ca, cs,
  # de, es, fa, fr, ja, lv, mi, nl, pl, pt_BR, ro, ru, sk, sl, sr, sr_Latn, tr,
  # uk, zh, zh_TW]
@@@ -22820,9 -22552,9 +22933,12 @@@ msgstr[1] "
  msgid "Token Request URI"
  msgstr "URI Richiesta Token"
  
 +msgid "Too many preview requests for this dataset. Wait a moment and try again."
 +msgstr ""
 +
+ msgid "Too many requests. Please wait and try again."
+ msgstr ""
+ 
  # Machine-translated via backfill_po.py (claude-sonnet-4-6) [refs: ja]
  #, python-format
  msgid ""
diff --cc superset/translations/ja/LC_MESSAGES/messages.po
index cf88c839cb0,3026d80971c..7452d7fdf7c
--- a/superset/translations/ja/LC_MESSAGES/messages.po
+++ b/superset/translations/ja/LC_MESSAGES/messages.po
@@@ -17,7 -17,7 +17,7 @@@ msgid "
  msgstr ""
  "Project-Id-Version: PROJECT VERSION\n"
  "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
- "POT-Creation-Date: 2026-10-14 20:29+0000\n"
 -"POT-Creation-Date: 2026-10-16 15:10-0400\n"
++"POT-Creation-Date: 2026-10-19 18:27+0000\n"
  "PO-Revision-Date: 2024-05-14 13:30+0900\n"
  "Last-Translator: Yuri Umezaki <bu...@gmail.com>\n"
  "Language: ja\n"
@@@ -209,6 -209,6 +209,13 @@@ msgstr "合計に対する %
  msgid "%(alertType)s \"%(alertName)s\" triggered successfully"
  msgstr "%(alertType)s 「%(alertName)s」が正常に実行されました"
  
++#, python-format
++msgid ""
++"%(column)s is an array column, which cannot be compared against the "
++"single value a transform returns. Mirrored filters on this mapping would "
++"fail at the database. Map a scalar partition column instead."
++msgstr ""
++
  #, python-format
  msgid "%(count)s %(label)s"
  msgstr ""
@@@ -1091,52 -1035,12 +1098,58 @@@ msgstr "新しいチャートが作成�
  msgid "A new dashboard will be created."
  msgstr "新しいダッシュボードが作成されます。"
  
 +#, python-format
 +msgid "A partition value transform cannot be longer than %(limit)d characters."
 +msgstr ""
 +
 +#, python-format
 +msgid "A partition value transform cannot call %(functions)s."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform cannot change data. It is evaluated against "
 +"the database to check that it mirrors, so it has to be a read."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform cannot contain a MySQL executable comment, "
 +"which the database executes and every validator reads as a comment."
 +msgstr ""
 +
 +msgid "A partition value transform cannot contain a sub-query."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform cannot name anything through a U&\"...\" "
 +"escape sequence, which the database decodes and every validator reads "
 +"literally."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform cannot read a sequence. NEXTVAL advances the "
 +"sequence every time it is evaluated, and the transform is evaluated on a "
 +"cache schedule."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform must be a single SQL expression, with no "
 +"FROM, WHERE or other clause."
 +msgstr ""
 +
 +msgid "A partition value transform must parse as a single SQL expression."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform must use the :value placeholder where the "
 +"engine will evaluate it, not inside a string literal or a comment."
 +msgstr ""
 +
+ #, python-format
+ msgid ""
+ "A password reset was requested for the %(app_name)s account "
+ "\"%(username)s\"."
+ msgstr ""
+ 
  msgid ""
  "A polar coordinate chart where the circle is broken into wedges of equal "
  "angle, and the value represented by any wedge is illustrated by its area,"
@@@ -3557,6 -3437,6 +3573,10 @@@ msgstr "チャートタイトル
  msgid "Chart type"
  msgstr "チャート種類"
  
++#, python-format
++msgid "Chart updated: %s"
++msgstr ""
++
  msgid "Chart was saved but could not be added to the selected tab."
  msgstr "チャートは保存されましたが、選択したタブに追加できませんでした。"
  
@@@ -5031,6 -4909,6 +5057,10 @@@ msgstr "ダッシュボードタイト�
  msgid "Dashboard updated %s"
  msgstr "ダッシュボードが更新されました %s"
  
++#, python-format
++msgid "Dashboard updated: %s"
++msgstr ""
++
  msgid "Dashboard usage"
  msgstr "ダッシュボードの利用状況"
  
@@@ -5255,6 -5133,6 +5285,10 @@@ msgstr "
  msgid "Dataset schema is invalid, caused by: %(error)s"
  msgstr "データセットスキーマが無効です。原因: %(error)s"
  
++#, python-format
++msgid "Dataset updated: %s"
++msgstr ""
++
  #, python-format
  msgid "Dataset used by %s chart updated: %s"
  msgid_plural "Dataset used by %s charts updated: %s"
@@@ -13296,6 -13101,6 +13378,12 @@@ msgstr "セマンティックビュー
  msgid "Semantic cache"
  msgstr ""
  
++#, python-format
++msgid ""
++"Semantic dimension '%(name)s' has ambiguous variants for grain "
++"'%(grain)s'. Use one dimension per name and grain."
++msgstr ""
++
  msgid "Semantic layer"
  msgstr "セマンティックレイヤー"
  
@@@ -14715,6 -14524,6 +14812,9 @@@ msgstr "
  msgid "Template parameters"
  msgstr "テンプレートパラメータ"
  
++msgid "Template parameters must be a valid JSON object."
++msgstr ""
++
  #, python-format
  msgid "Template processing error: %(error)s"
  msgstr "テンプレート処理エラー: %(error)s"
@@@ -15349,15 -15148,9 +15449,18 @@@ msgid "The parameter %(parameters)s in 
  msgid_plural "The following parameters in your query are undefined: %(parameters)s."
  msgstr[0] "クエリ内のパラメータ %(parameters)s が定義されていません。"
  
 +#, python-format
 +msgid ""
 +"The partition column cannot be mapped onto itself. %(name)s is both the "
 +"partition column and the mapped column."
 +msgstr ""
 +
 +msgid "The partition filter mapping was cleared: its column is gone"
 +msgstr ""
 +
+ msgid "The password could not be reset. Please try again."
+ msgstr ""
+ 
  #, python-format
  msgid "The password provided for username \"%(username)s\" is incorrect."
  msgstr "ユーザー「%(username)s」のパスワードが正しくありません。"
@@@ -16925,9 -16657,9 +17038,12 @@@ msgstr[0] "
  msgid "Token Request URI"
  msgstr "トークンリクエスト URI"
  
 +msgid "Too many preview requests for this dataset. Wait a moment and try again."
 +msgstr ""
 +
+ msgid "Too many requests. Please wait and try again."
+ msgstr ""
+ 
  #, python-format
  msgid ""
  "Too many sub-slices requested. The maximum allowed is %(max)s, but "
diff --cc superset/translations/ko/LC_MESSAGES/messages.po
index 62064d3a424,2c995306ef8..ff704b7f110
--- a/superset/translations/ko/LC_MESSAGES/messages.po
+++ b/superset/translations/ko/LC_MESSAGES/messages.po
@@@ -17,7 -17,7 +17,7 @@@ msgid "
  msgstr ""
  "Project-Id-Version: PROJECT VERSION\n"
  "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
- "POT-Creation-Date: 2026-10-14 20:29+0000\n"
 -"POT-Creation-Date: 2026-10-16 15:10-0400\n"
++"POT-Creation-Date: 2026-10-19 18:27+0000\n"
  "PO-Revision-Date: 2019-02-02 22:28+0900\n"
  "Last-Translator: \n"
  "Language: ko\n"
@@@ -265,6 -265,6 +265,13 @@@ msgstr "컬럼 보기
  msgid "%(alertType)s \"%(alertName)s\" triggered successfully"
  msgstr ""
  
++#, python-format
++msgid ""
++"%(column)s is an array column, which cannot be compared against the "
++"single value a transform returns. Mirrored filters on this mapping would "
++"fail at the database. Map a scalar partition column instead."
++msgstr ""
++
  #, python-format
  msgid "%(count)s %(label)s"
  msgstr ""
@@@ -1529,52 -1473,12 +1536,58 @@@ msgstr "차트를 생성할 수 없습�
  msgid "A new dashboard will be created."
  msgstr "대시보드를 생성할 수 없습니다."
  
 +#, python-format
 +msgid "A partition value transform cannot be longer than %(limit)d characters."
 +msgstr ""
 +
 +#, python-format
 +msgid "A partition value transform cannot call %(functions)s."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform cannot change data. It is evaluated against "
 +"the database to check that it mirrors, so it has to be a read."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform cannot contain a MySQL executable comment, "
 +"which the database executes and every validator reads as a comment."
 +msgstr ""
 +
 +msgid "A partition value transform cannot contain a sub-query."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform cannot name anything through a U&\"...\" "
 +"escape sequence, which the database decodes and every validator reads "
 +"literally."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform cannot read a sequence. NEXTVAL advances the "
 +"sequence every time it is evaluated, and the transform is evaluated on a "
 +"cache schedule."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform must be a single SQL expression, with no "
 +"FROM, WHERE or other clause."
 +msgstr ""
 +
 +msgid "A partition value transform must parse as a single SQL expression."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform must use the :value placeholder where the "
 +"engine will evaluate it, not inside a string literal or a comment."
 +msgstr ""
 +
+ #, python-format
+ msgid ""
+ "A password reset was requested for the %(app_name)s account "
+ "\"%(username)s\"."
+ msgstr ""
+ 
  msgid ""
  "A polar coordinate chart where the circle is broken into wedges of equal "
  "angle, and the value represented by any wedge is illustrated by its area,"
@@@ -5440,6 -5320,6 +5456,10 @@@ msgstr "차트 유형
  msgid "Chart type"
  msgstr "차트 유형"
  
++#, python-format
++msgid "Chart updated: %s"
++msgstr ""
++
  #, fuzzy
  msgid "Chart was saved but could not be added to the selected tab."
  msgstr "차트를 삭제할 수 없습니다."
@@@ -7792,6 -7670,6 +7818,10 @@@ msgstr "대시보드
  msgid "Dashboard updated %s"
  msgstr ""
  
++#, python-format
++msgid "Dashboard updated: %s"
++msgstr ""
++
  #, fuzzy
  msgid "Dashboard usage"
  msgstr "대시보드"
@@@ -8141,6 -8019,6 +8171,10 @@@ msgstr "
  msgid "Dataset schema is invalid, caused by: %(error)s"
  msgstr "데이터셋 스키마가 유효하지 않습니다. 원인: %(error)s"
  
++#, python-format
++msgid "Dataset updated: %s"
++msgstr ""
++
  #, python-format
  msgid "Dataset used by %s chart updated: %s"
  msgid_plural "Dataset used by %s charts updated: %s"
@@@ -21261,6 -21066,6 +21343,12 @@@ msgstr "시맨틱 뷰
  msgid "Semantic cache"
  msgstr ""
  
++#, python-format
++msgid ""
++"Semantic dimension '%(name)s' has ambiguous variants for grain "
++"'%(grain)s'. Use one dimension per name and grain."
++msgstr ""
++
  #, fuzzy
  msgid "Semantic layer"
  msgstr "주석 레이어"
@@@ -23576,6 -23385,6 +23673,9 @@@ msgstr "
  msgid "Template parameters"
  msgstr "템플릿 매개변수"
  
++msgid "Template parameters must be a valid JSON object."
++msgstr ""
++
  #, fuzzy, python-format
  msgid "Template processing error: %(error)s"
  msgstr "부적절한 요청입니다 : %(error)s"
@@@ -24573,15 -24372,9 +24673,18 @@@ msgid "The parameter %(parameters)s in 
  msgid_plural "The following parameters in your query are undefined: %(parameters)s."
  msgstr[0] "쿼리에서 다음 매개변수가 정의되지 않았습니다: %(parameters)s."
  
 +#, python-format
 +msgid ""
 +"The partition column cannot be mapped onto itself. %(name)s is both the "
 +"partition column and the mapped column."
 +msgstr ""
 +
 +msgid "The partition filter mapping was cleared: its column is gone"
 +msgstr ""
 +
+ msgid "The password could not be reset. Please try again."
+ msgstr ""
+ 
  # Machine-translated via backfill_po.py (claude-sonnet-4-6) [refs: ar, ca, cs,
  # de, es, fa, fr, ja, lv, mi, nl, pl, pt_BR, ro, ru, sk, sl, sr, sr_Latn, tr,
  # uk, zh, zh_TW]
@@@ -27026,9 -26758,9 +27139,12 @@@ msgstr[0] "
  msgid "Token Request URI"
  msgstr "토큰 요청 URI"
  
 +msgid "Too many preview requests for this dataset. Wait a moment and try again."
 +msgstr ""
 +
+ msgid "Too many requests. Please wait and try again."
+ msgstr ""
+ 
  # Machine-translated via backfill_po.py (claude-sonnet-4-6) [refs: ja]
  #, fuzzy, python-format
  msgid ""
diff --cc superset/translations/lv/LC_MESSAGES/messages.po
index 84caf267be4,165e565458f..05c24dae144
--- a/superset/translations/lv/LC_MESSAGES/messages.po
+++ b/superset/translations/lv/LC_MESSAGES/messages.po
@@@ -21,7 -21,7 +21,7 @@@ msgid "
  msgstr ""
  "Project-Id-Version: Superset VERSION\n"
  "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
- "POT-Creation-Date: 2026-10-14 20:29+0000\n"
 -"POT-Creation-Date: 2026-10-16 15:10-0400\n"
++"POT-Creation-Date: 2026-10-19 18:27+0000\n"
  "PO-Revision-Date: 2026-03-27 14:01+0200\n"
  "Last-Translator: FULL NAME <EM...@ADDRESS>\n"
  "Language: lv\n"
@@@ -231,6 -231,6 +231,13 @@@ msgstr "% no kopējā
  msgid "%(alertType)s \"%(alertName)s\" triggered successfully"
  msgstr ""
  
++#, python-format
++msgid ""
++"%(column)s is an array column, which cannot be compared against the "
++"single value a transform returns. Mirrored filters on this mapping would "
++"fail at the database. Map a scalar partition column instead."
++msgstr ""
++
  #, python-format
  msgid "%(count)s %(label)s"
  msgstr ""
@@@ -1208,52 -1152,12 +1215,58 @@@ msgstr "Tiks izveidota jauna diagramma.
  msgid "A new dashboard will be created."
  msgstr "Tiks izveidots jauns infopanelis."
  
 +#, python-format
 +msgid "A partition value transform cannot be longer than %(limit)d characters."
 +msgstr ""
 +
 +#, python-format
 +msgid "A partition value transform cannot call %(functions)s."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform cannot change data. It is evaluated against "
 +"the database to check that it mirrors, so it has to be a read."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform cannot contain a MySQL executable comment, "
 +"which the database executes and every validator reads as a comment."
 +msgstr ""
 +
 +msgid "A partition value transform cannot contain a sub-query."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform cannot name anything through a U&\"...\" "
 +"escape sequence, which the database decodes and every validator reads "
 +"literally."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform cannot read a sequence. NEXTVAL advances the "
 +"sequence every time it is evaluated, and the transform is evaluated on a "
 +"cache schedule."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform must be a single SQL expression, with no "
 +"FROM, WHERE or other clause."
 +msgstr ""
 +
 +msgid "A partition value transform must parse as a single SQL expression."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform must use the :value placeholder where the "
 +"engine will evaluate it, not inside a string literal or a comment."
 +msgstr ""
 +
+ #, python-format
+ msgid ""
+ "A password reset was requested for the %(app_name)s account "
+ "\"%(username)s\"."
+ msgstr ""
+ 
  msgid ""
  "A polar coordinate chart where the circle is broken into wedges of equal "
  "angle, and the value represented by any wedge is illustrated by its area,"
@@@ -3866,6 -3746,6 +3882,10 @@@ msgstr "Diagrammas virsraksts
  msgid "Chart type"
  msgstr "Diagrammas veids"
  
++#, python-format
++msgid "Chart updated: %s"
++msgstr ""
++
  msgid "Chart was saved but could not be added to the selected tab."
  msgstr "Diagramma tika saglabāta, bet to nevarēja pievienot izvēlētajai cilnei."
  
@@@ -5438,6 -5316,6 +5464,10 @@@ msgstr "Infopaneļa virsraksts
  msgid "Dashboard updated %s"
  msgstr "Pēdējo reizi atjaunināts %s"
  
++#, python-format
++msgid "Dashboard updated: %s"
++msgstr ""
++
  msgid "Dashboard usage"
  msgstr "Informācijas paneļa lietojums"
  
@@@ -5683,6 -5561,6 +5713,10 @@@ msgstr "
  msgid "Dataset schema is invalid, caused by: %(error)s"
  msgstr "Datu kopas shēma ir nederīga, iemesls: %(error)s"
  
++#, python-format
++msgid "Dataset updated: %s"
++msgstr ""
++
  #, python-format
  msgid "Dataset used by %s chart updated: %s"
  msgid_plural "Dataset used by %s charts updated: %s"
@@@ -14276,6 -14081,6 +14358,12 @@@ msgstr "Semantiskie skati
  msgid "Semantic cache"
  msgstr ""
  
++#, python-format
++msgid ""
++"Semantic dimension '%(name)s' has ambiguous variants for grain "
++"'%(grain)s'. Use one dimension per name and grain."
++msgstr ""
++
  #, fuzzy
  msgid "Semantic layer"
  msgstr "Anotāciju slānis"
@@@ -15820,6 -15629,6 +15917,9 @@@ msgstr "
  msgid "Template parameters"
  msgstr "Veidnes parametri"
  
++msgid "Template parameters must be a valid JSON object."
++msgstr ""
++
  #, python-format
  msgid "Template processing error: %(error)s"
  msgstr "Veidnes apstrādes kļūda: %(error)s"
@@@ -16546,15 -16345,9 +16646,18 @@@ msgstr[0] "Parametrs %(parameters)s jū
  msgstr[1] "Sekojoši parametri jūsu vaicājumā nav definēti: %(parameters)s."
  msgstr[2] "Sekojoši parametri jūsu vaicājumā nav definēti: %(parameters)s."
  
 +#, python-format
 +msgid ""
 +"The partition column cannot be mapped onto itself. %(name)s is both the "
 +"partition column and the mapped column."
 +msgstr ""
 +
 +msgid "The partition filter mapping was cleared: its column is gone"
 +msgstr ""
 +
+ msgid "The password could not be reset. Please try again."
+ msgstr ""
+ 
  #, python-format
  msgid "The password provided for username \"%(username)s\" is incorrect."
  msgstr "Parole lietotājvārdam \"%(username)s\" ir nepareiza."
@@@ -18316,9 -18048,9 +18429,12 @@@ msgstr[2] "
  msgid "Token Request URI"
  msgstr "Talona pieprasījuma URI"
  
 +msgid "Too many preview requests for this dataset. Wait a moment and try again."
 +msgstr ""
 +
+ msgid "Too many requests. Please wait and try again."
+ msgstr ""
+ 
  # Machine-translated via backfill_po.py (claude-sonnet-4-6) [refs: ja]
  #, fuzzy, python-format
  msgid ""
diff --cc superset/translations/messages.pot
index f4960aab1f6,5d7efef10fe..36b95c11970
--- a/superset/translations/messages.pot
+++ b/superset/translations/messages.pot
@@@ -25,7 -25,7 +25,7 @@@ msgid "
  msgstr ""
  "Project-Id-Version: Superset VERSION\n"
  "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
- "POT-Creation-Date: 2026-10-15 17:43+0000\n"
 -"POT-Creation-Date: 2026-10-16 15:10-0400\n"
++"POT-Creation-Date: 2026-10-19 18:27+0000\n"
  "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
  "Last-Translator: FULL NAME <EM...@ADDRESS>\n"
  "Language-Team: LANGUAGE <LL...@li.org>\n"
@@@ -12481,6 -12308,12 +12500,10 @@@ msgstr "
  msgid "Semantic cache"
  msgstr ""
  
+ #, python-format
 -msgid ""
 -"Semantic dimension '%(name)s' has ambiguous variants for grain '%(grain)s'. "
 -"Use one dimension per name and grain."
++msgid "Semantic dimension '%(name)s' has ambiguous variants for grain '%(grain)s'. Use one dimension per name and grain."
+ msgstr ""
+ 
  msgid "Semantic layer"
  msgstr ""
  
diff --cc superset/translations/mi/LC_MESSAGES/messages.po
index a23d6be97a5,e444b49c11b..24d751f70ee
--- a/superset/translations/mi/LC_MESSAGES/messages.po
+++ b/superset/translations/mi/LC_MESSAGES/messages.po
@@@ -21,7 -21,7 +21,7 @@@ msgid "
  msgstr ""
  "Project-Id-Version: Superset VERSION\n"
  "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
- "POT-Creation-Date: 2026-10-14 20:29+0000\n"
 -"POT-Creation-Date: 2026-10-16 15:10-0400\n"
++"POT-Creation-Date: 2026-10-19 18:27+0000\n"
  "PO-Revision-Date: 2026-01-25 16:09+1300\n"
  "Last-Translator: karo.co.nz\n"
  "Language: mi\n"
@@@ -240,6 -240,6 +240,13 @@@ msgstr "% o te katoa
  msgid "%(alertType)s \"%(alertName)s\" triggered successfully"
  msgstr ""
  
++#, python-format
++msgid ""
++"%(column)s is an array column, which cannot be compared against the "
++"single value a transform returns. Mirrored filters on this mapping would "
++"fail at the database. Map a scalar partition column instead."
++msgstr ""
++
  #, python-format
  msgid "%(count)s %(label)s"
  msgstr ""
@@@ -1207,52 -1151,12 +1214,58 @@@ msgstr "Ka hangaia he kauwhata hou.
  msgid "A new dashboard will be created."
  msgstr "Ka hangaia he papatohu hou."
  
 +#, python-format
 +msgid "A partition value transform cannot be longer than %(limit)d characters."
 +msgstr ""
 +
 +#, python-format
 +msgid "A partition value transform cannot call %(functions)s."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform cannot change data. It is evaluated against "
 +"the database to check that it mirrors, so it has to be a read."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform cannot contain a MySQL executable comment, "
 +"which the database executes and every validator reads as a comment."
 +msgstr ""
 +
 +msgid "A partition value transform cannot contain a sub-query."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform cannot name anything through a U&\"...\" "
 +"escape sequence, which the database decodes and every validator reads "
 +"literally."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform cannot read a sequence. NEXTVAL advances the "
 +"sequence every time it is evaluated, and the transform is evaluated on a "
 +"cache schedule."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform must be a single SQL expression, with no "
 +"FROM, WHERE or other clause."
 +msgstr ""
 +
 +msgid "A partition value transform must parse as a single SQL expression."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform must use the :value placeholder where the "
 +"engine will evaluate it, not inside a string literal or a comment."
 +msgstr ""
 +
+ #, python-format
+ msgid ""
+ "A password reset was requested for the %(app_name)s account "
+ "\"%(username)s\"."
+ msgstr ""
+ 
  msgid ""
  "A polar coordinate chart where the circle is broken into wedges of equal "
  "angle, and the value represented by any wedge is illustrated by its area,"
@@@ -3992,6 -3872,6 +4008,10 @@@ msgstr "Taitara kauwhata
  msgid "Chart type"
  msgstr "Taitara kauwhata"
  
++#, python-format
++msgid "Chart updated: %s"
++msgstr ""
++
  #, fuzzy
  msgid "Chart was saved but could not be added to the selected tab."
  msgstr "Kāore i taea te muku i ngā kauwhata."
@@@ -5642,6 -5520,6 +5668,10 @@@ msgstr "Taitara papatohu
  msgid "Dashboard updated %s"
  msgstr "I Whakahouhia Whakamutunga %s"
  
++#, python-format
++msgid "Dashboard updated: %s"
++msgstr ""
++
  msgid "Dashboard usage"
  msgstr "Whakamahinga papatohu"
  
@@@ -5891,6 -5769,6 +5921,10 @@@ msgstr "
  msgid "Dataset schema is invalid, caused by: %(error)s"
  msgstr "He muhu te hanga rārangi raraunga, nā: %(error)s"
  
++#, python-format
++msgid "Dataset updated: %s"
++msgstr ""
++
  #, python-format
  msgid "Dataset used by %s chart updated: %s"
  msgid_plural "Dataset used by %s charts updated: %s"
@@@ -14936,6 -14741,6 +15018,12 @@@ msgstr "Ngā Tirohanga Tikanga
  msgid "Semantic cache"
  msgstr ""
  
++#, python-format
++msgid ""
++"Semantic dimension '%(name)s' has ambiguous variants for grain "
++"'%(grain)s'. Use one dimension per name and grain."
++msgstr ""
++
  #, fuzzy
  msgid "Semantic layer"
  msgstr "Papa tohu"
@@@ -16572,6 -16381,6 +16669,9 @@@ msgstr "
  msgid "Template parameters"
  msgstr "Tawhā tauira"
  
++msgid "Template parameters must be a valid JSON object."
++msgstr ""
++
  #, python-format
  msgid "Template processing error: %(error)s"
  msgstr ""
@@@ -17324,15 -17123,9 +17424,18 @@@ msgid_plural "The following parameters 
  msgstr[0] "Kāore i tautuhia te tawhā %(parameters)s i tō pātai."
  msgstr[1] "Kāore i tautuhia ēnei tawhā i tō pātai: %(parameters)s."
  
 +#, python-format
 +msgid ""
 +"The partition column cannot be mapped onto itself. %(name)s is both the "
 +"partition column and the mapped column."
 +msgstr ""
 +
 +msgid "The partition filter mapping was cleared: its column is gone"
 +msgstr ""
 +
+ msgid "The password could not be reset. Please try again."
+ msgstr ""
+ 
  #, python-format
  msgid "The password provided for username \"%(username)s\" is incorrect."
  msgstr "He hē te kupuhipa kua tukuna mō te ingoa kaiwhakamahi \"%(username)s\"."
@@@ -19203,9 -18935,9 +19316,12 @@@ msgstr[1] "
  msgid "Token Request URI"
  msgstr "URI Tono Mōkihi"
  
 +msgid "Too many preview requests for this dataset. Wait a moment and try again."
 +msgstr ""
 +
+ msgid "Too many requests. Please wait and try again."
+ msgstr ""
+ 
  # Machine-translated via backfill_po.py (claude-sonnet-4-6) [refs: ja]
  #, fuzzy, python-format
  msgid ""
diff --cc superset/translations/nl/LC_MESSAGES/messages.po
index 6a9db8023e8,3d46be017b2..0d18bc03e80
--- a/superset/translations/nl/LC_MESSAGES/messages.po
+++ b/superset/translations/nl/LC_MESSAGES/messages.po
@@@ -21,7 -21,7 +21,7 @@@ msgid "
  msgstr ""
  "Project-Id-Version:  superset-ds\n"
  "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
- "POT-Creation-Date: 2026-10-14 20:29+0000\n"
 -"POT-Creation-Date: 2026-10-16 15:10-0400\n"
++"POT-Creation-Date: 2026-10-19 18:27+0000\n"
  "PO-Revision-Date: 2024-05-08 14:41+0000\n"
  "Last-Translator: \n"
  "Language: nl\n"
@@@ -248,6 -248,6 +248,13 @@@ msgstr "Toon Totaal
  msgid "%(alertType)s \"%(alertName)s\" triggered successfully"
  msgstr ""
  
++#, python-format
++msgid ""
++"%(column)s is an array column, which cannot be compared against the "
++"single value a transform returns. Mirrored filters on this mapping would "
++"fail at the database. Map a scalar partition column instead."
++msgstr ""
++
  #, python-format
  msgid "%(count)s %(label)s"
  msgstr ""
@@@ -1219,52 -1163,12 +1226,58 @@@ msgstr "Er zal een nieuwe grafiek worde
  msgid "A new dashboard will be created."
  msgstr "Er zal een nieuw dashboard worden aangemaakt."
  
 +#, python-format
 +msgid "A partition value transform cannot be longer than %(limit)d characters."
 +msgstr ""
 +
 +#, python-format
 +msgid "A partition value transform cannot call %(functions)s."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform cannot change data. It is evaluated against "
 +"the database to check that it mirrors, so it has to be a read."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform cannot contain a MySQL executable comment, "
 +"which the database executes and every validator reads as a comment."
 +msgstr ""
 +
 +msgid "A partition value transform cannot contain a sub-query."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform cannot name anything through a U&\"...\" "
 +"escape sequence, which the database decodes and every validator reads "
 +"literally."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform cannot read a sequence. NEXTVAL advances the "
 +"sequence every time it is evaluated, and the transform is evaluated on a "
 +"cache schedule."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform must be a single SQL expression, with no "
 +"FROM, WHERE or other clause."
 +msgstr ""
 +
 +msgid "A partition value transform must parse as a single SQL expression."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform must use the :value placeholder where the "
 +"engine will evaluate it, not inside a string literal or a comment."
 +msgstr ""
 +
+ #, python-format
+ msgid ""
+ "A password reset was requested for the %(app_name)s account "
+ "\"%(username)s\"."
+ msgstr ""
+ 
  msgid ""
  "A polar coordinate chart where the circle is broken into wedges of equal "
  "angle, and the value represented by any wedge is illustrated by its area,"
@@@ -4101,6 -3981,6 +4117,10 @@@ msgstr "Titel grafiek
  msgid "Chart type"
  msgstr "Titel grafiek"
  
++#, python-format
++msgid "Chart updated: %s"
++msgstr ""
++
  #, fuzzy
  msgid "Chart was saved but could not be added to the selected tab."
  msgstr "Grafieken konden niet worden verwijderd."
@@@ -5830,6 -5708,6 +5856,10 @@@ msgstr "Dashboard titel
  msgid "Dashboard updated %s"
  msgstr "Laatst bijgewerkt %s"
  
++#, python-format
++msgid "Dashboard updated: %s"
++msgstr ""
++
  msgid "Dashboard usage"
  msgstr "Dashboard gebruik"
  
@@@ -6088,6 -5966,6 +6118,10 @@@ msgstr "
  msgid "Dataset schema is invalid, caused by: %(error)s"
  msgstr "Dataset schema is ongeldig, veroorzaakt door: %(error)s"
  
++#, python-format
++msgid "Dataset updated: %s"
++msgstr ""
++
  #, python-format
  msgid "Dataset used by %s chart updated: %s"
  msgid_plural "Dataset used by %s charts updated: %s"
@@@ -15427,6 -15232,6 +15509,12 @@@ msgstr "Semantische weergaven
  msgid "Semantic cache"
  msgstr ""
  
++#, python-format
++msgid ""
++"Semantic dimension '%(name)s' has ambiguous variants for grain "
++"'%(grain)s'. Use one dimension per name and grain."
++msgstr ""
++
  #, fuzzy
  msgid "Semantic layer"
  msgstr "Aantekeningenlaag"
@@@ -17094,6 -16903,6 +17191,9 @@@ msgstr "
  msgid "Template parameters"
  msgstr "Sjabloon parameters"
  
++msgid "Template parameters must be a valid JSON object."
++msgstr ""
++
  #, fuzzy, python-format
  msgid "Template processing error: %(error)s"
  msgstr "Fout: %(error)s"
@@@ -17917,15 -17716,9 +18017,18 @@@ msgstr[1] "
  "De volgende parameters in uw zoekopdracht zijn ongedefinieerd: "
  "%(parameters)s."
  
 +#, python-format
 +msgid ""
 +"The partition column cannot be mapped onto itself. %(name)s is both the "
 +"partition column and the mapped column."
 +msgstr ""
 +
 +msgid "The partition filter mapping was cleared: its column is gone"
 +msgstr ""
 +
+ msgid "The password could not be reset. Please try again."
+ msgstr ""
+ 
  #, python-format
  msgid "The password provided for username \"%(username)s\" is incorrect."
  msgstr "Het opgegeven wachtwoord voor gebruikersnaam “%(username)s” is onjuist."
@@@ -19857,9 -19589,9 +19970,12 @@@ msgstr[1] "
  msgid "Token Request URI"
  msgstr "Token-aanvraag-URI"
  
 +msgid "Too many preview requests for this dataset. Wait a moment and try again."
 +msgstr ""
 +
+ msgid "Too many requests. Please wait and try again."
+ msgstr ""
+ 
  # Machine-translated via backfill_po.py (claude-sonnet-4-6) [refs: ja]
  #, fuzzy, python-format
  msgid ""
diff --cc superset/translations/pl/LC_MESSAGES/messages.po
index e8e1881aaa6,64a124a07dc..d95f49d39bb
--- a/superset/translations/pl/LC_MESSAGES/messages.po
+++ b/superset/translations/pl/LC_MESSAGES/messages.po
@@@ -17,7 -17,7 +17,7 @@@ msgid "
  msgstr ""
  "Project-Id-Version: PROJECT VERSION\n"
  "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
- "POT-Creation-Date: 2026-10-14 20:29+0000\n"
 -"POT-Creation-Date: 2026-10-16 15:10-0400\n"
++"POT-Creation-Date: 2026-10-19 18:27+0000\n"
  "PO-Revision-Date: 2021-11-16 17:33+0100\n"
  "Last-Translator: FULL NAME <EM...@ADDRESS>\n"
  "Language: fr\n"
@@@ -249,6 -249,6 +249,13 @@@ msgstr "Pokaż całkowitą wartość
  msgid "%(alertType)s \"%(alertName)s\" triggered successfully"
  msgstr ""
  
++#, python-format
++msgid ""
++"%(column)s is an array column, which cannot be compared against the "
++"single value a transform returns. Mirrored filters on this mapping would "
++"fail at the database. Map a scalar partition column instead."
++msgstr ""
++
  #, python-format
  msgid "%(count)s %(label)s"
  msgstr ""
@@@ -1252,52 -1196,12 +1259,58 @@@ msgstr "Zostanie utworzony nowy wykres.
  msgid "A new dashboard will be created."
  msgstr "Zostanie utworzony nowy panel kontrolny."
  
 +#, python-format
 +msgid "A partition value transform cannot be longer than %(limit)d characters."
 +msgstr ""
 +
 +#, python-format
 +msgid "A partition value transform cannot call %(functions)s."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform cannot change data. It is evaluated against "
 +"the database to check that it mirrors, so it has to be a read."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform cannot contain a MySQL executable comment, "
 +"which the database executes and every validator reads as a comment."
 +msgstr ""
 +
 +msgid "A partition value transform cannot contain a sub-query."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform cannot name anything through a U&\"...\" "
 +"escape sequence, which the database decodes and every validator reads "
 +"literally."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform cannot read a sequence. NEXTVAL advances the "
 +"sequence every time it is evaluated, and the transform is evaluated on a "
 +"cache schedule."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform must be a single SQL expression, with no "
 +"FROM, WHERE or other clause."
 +msgstr ""
 +
 +msgid "A partition value transform must parse as a single SQL expression."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform must use the :value placeholder where the "
 +"engine will evaluate it, not inside a string literal or a comment."
 +msgstr ""
 +
+ #, python-format
+ msgid ""
+ "A password reset was requested for the %(app_name)s account "
+ "\"%(username)s\"."
+ msgstr ""
+ 
  msgid ""
  "A polar coordinate chart where the circle is broken into wedges of equal "
  "angle, and the value represented by any wedge is illustrated by its area,"
@@@ -4114,6 -3994,6 +4130,10 @@@ msgstr "Tytuł wykresu
  msgid "Chart type"
  msgstr "Tytuł wykresu"
  
++#, python-format
++msgid "Chart updated: %s"
++msgstr ""
++
  #, fuzzy
  msgid "Chart was saved but could not be added to the selected tab."
  msgstr "Nie można usunąć wykresów."
@@@ -5898,6 -5776,6 +5924,10 @@@ msgstr "Tytuł pulpitu nawigacyjnego
  msgid "Dashboard updated %s"
  msgstr "Ostatnia aktualizacja %s"
  
++#, python-format
++msgid "Dashboard updated: %s"
++msgstr ""
++
  #, fuzzy
  msgid "Dashboard usage"
  msgstr "Użycie pulpitu nawigacyjnego"
@@@ -6162,6 -6040,6 +6192,10 @@@ msgstr "
  msgid "Dataset schema is invalid, caused by: %(error)s"
  msgstr "Schemat zestawu danych jest nieprawidłowy: %(error)s"
  
++#, python-format
++msgid "Dataset updated: %s"
++msgstr ""
++
  #, python-format
  msgid "Dataset used by %s chart updated: %s"
  msgid_plural "Dataset used by %s charts updated: %s"
@@@ -15691,6 -15496,6 +15773,12 @@@ msgstr "Widoki semantyczne
  msgid "Semantic cache"
  msgstr ""
  
++#, python-format
++msgid ""
++"Semantic dimension '%(name)s' has ambiguous variants for grain "
++"'%(grain)s'. Use one dimension per name and grain."
++msgstr ""
++
  #, fuzzy
  msgid "Semantic layer"
  msgstr "Warstwa adnotacji"
@@@ -17445,6 -17254,6 +17542,9 @@@ msgstr "
  msgid "Template parameters"
  msgstr "Parametry szablonu"
  
++msgid "Template parameters must be a valid JSON object."
++msgstr ""
++
  #, fuzzy, python-format
  msgid "Template processing error: %(error)s"
  msgstr "Błąd parsowania: %(error)s"
@@@ -18240,15 -18039,9 +18340,18 @@@ msgstr[1] "
  "Następujące parametry w twoim zapytaniu są niezdefiniowane: "
  "%(parameters)s."
  
 +#, python-format
 +msgid ""
 +"The partition column cannot be mapped onto itself. %(name)s is both the "
 +"partition column and the mapped column."
 +msgstr ""
 +
 +msgid "The partition filter mapping was cleared: its column is gone"
 +msgstr ""
 +
+ msgid "The password could not be reset. Please try again."
+ msgstr ""
+ 
  #, python-format
  msgid "The password provided for username \"%(username)s\" is incorrect."
  msgstr "Podane hasło dla użytkownika „%(username)s” jest nieprawidłowe."
@@@ -20184,9 -19916,9 +20297,12 @@@ msgstr[1] "
  msgid "Token Request URI"
  msgstr "URI żądania tokenu"
  
 +msgid "Too many preview requests for this dataset. Wait a moment and try again."
 +msgstr ""
 +
+ msgid "Too many requests. Please wait and try again."
+ msgstr ""
+ 
  # Machine-translated via backfill_po.py (claude-sonnet-4-6) [refs: ja]
  #, fuzzy, python-format
  msgid ""
diff --cc superset/translations/pt/LC_MESSAGES/messages.po
index c319c5873d7,da9883c79be..181250a6e82
--- a/superset/translations/pt/LC_MESSAGES/messages.po
+++ b/superset/translations/pt/LC_MESSAGES/messages.po
@@@ -17,7 -17,7 +17,7 @@@ msgid "
  msgstr ""
  "Project-Id-Version: PROJECT VERSION\n"
  "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
- "POT-Creation-Date: 2026-10-14 20:29+0000\n"
 -"POT-Creation-Date: 2026-10-16 15:10-0400\n"
++"POT-Creation-Date: 2026-10-19 18:27+0000\n"
  "PO-Revision-Date: 2026-07-17 14:21+0000\n"
  "Last-Translator: José Teixeira <jo...@douroeci.com>\n"
  "Language: pt\n"
@@@ -263,6 -263,6 +263,13 @@@ msgstr "porcentagem do total
  msgid "%(alertType)s \"%(alertName)s\" triggered successfully"
  msgstr "%(alertType)s \"%(alertName)s\" ativado com sucesso"
  
++#, python-format
++msgid ""
++"%(column)s is an array column, which cannot be compared against the "
++"single value a transform returns. Mirrored filters on this mapping would "
++"fail at the database. Map a scalar partition column instead."
++msgstr ""
++
  #, python-format
  msgid "%(count)s %(label)s"
  msgstr ""
@@@ -1473,52 -1417,12 +1480,58 @@@ msgstr "Um novo gráfico será criado.
  msgid "A new dashboard will be created."
  msgstr "Um novo painel será criado."
  
 +#, python-format
 +msgid "A partition value transform cannot be longer than %(limit)d characters."
 +msgstr ""
 +
 +#, python-format
 +msgid "A partition value transform cannot call %(functions)s."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform cannot change data. It is evaluated against "
 +"the database to check that it mirrors, so it has to be a read."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform cannot contain a MySQL executable comment, "
 +"which the database executes and every validator reads as a comment."
 +msgstr ""
 +
 +msgid "A partition value transform cannot contain a sub-query."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform cannot name anything through a U&\"...\" "
 +"escape sequence, which the database decodes and every validator reads "
 +"literally."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform cannot read a sequence. NEXTVAL advances the "
 +"sequence every time it is evaluated, and the transform is evaluated on a "
 +"cache schedule."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform must be a single SQL expression, with no "
 +"FROM, WHERE or other clause."
 +msgstr ""
 +
 +msgid "A partition value transform must parse as a single SQL expression."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform must use the :value placeholder where the "
 +"engine will evaluate it, not inside a string literal or a comment."
 +msgstr ""
 +
+ #, python-format
+ msgid ""
+ "A password reset was requested for the %(app_name)s account "
+ "\"%(username)s\"."
+ msgstr ""
+ 
  msgid ""
  "A polar coordinate chart where the circle is broken into wedges of equal "
  "angle, and the value represented by any wedge is illustrated by its area,"
@@@ -4887,6 -4767,6 +4903,10 @@@ msgstr "Título do gráfico
  msgid "Chart type"
  msgstr "Tipo de gráfico"
  
++#, python-format
++msgid "Chart updated: %s"
++msgstr ""
++
  msgid "Chart was saved but could not be added to the selected tab."
  msgstr "O gráfico foi salvo, mas não pôde ser adicionado à guia selecionada."
  
@@@ -6885,6 -6763,6 +6911,10 @@@ msgstr "Título do painel
  msgid "Dashboard updated %s"
  msgstr "Painel atualizado%s"
  
++#, python-format
++msgid "Dashboard updated: %s"
++msgstr ""
++
  msgid "Dashboard usage"
  msgstr "Uso do painel"
  
@@@ -7174,6 -7052,6 +7204,10 @@@ msgstr "
  msgid "Dataset schema is invalid, caused by: %(error)s"
  msgstr "Esquema do conjunto de dados inválido, causado por: %(error)s"
  
++#, python-format
++msgid "Dataset updated: %s"
++msgstr ""
++
  #, python-format
  msgid "Dataset used by %s chart updated: %s"
  msgid_plural "Dataset used by %s charts updated: %s"
@@@ -18384,6 -18189,6 +18466,12 @@@ msgstr "Visualizações Semânticas
  msgid "Semantic cache"
  msgstr ""
  
++#, python-format
++msgid ""
++"Semantic dimension '%(name)s' has ambiguous variants for grain "
++"'%(grain)s'. Use one dimension per name and grain."
++msgstr ""
++
  msgid "Semantic layer"
  msgstr "Camada semântica"
  
@@@ -20385,6 -20194,6 +20482,9 @@@ msgstr "
  msgid "Template parameters"
  msgstr "Parâmetros do Modelo"
  
++msgid "Template parameters must be a valid JSON object."
++msgstr ""
++
  # Machine-translated via backfill_po.py (claude-sonnet-4-6) [refs: de, ja, lv,
  # ro, ru, sr, sr_Latn, uk]
  #, python-format
@@@ -21311,15 -21110,9 +21411,18 @@@ msgstr[1] "
  "Os seguintes parâmetros na sua consulta não estão definidos: "
  "%(parameters)s."
  
 +#, python-format
 +msgid ""
 +"The partition column cannot be mapped onto itself. %(name)s is both the "
 +"partition column and the mapped column."
 +msgstr ""
 +
 +msgid "The partition filter mapping was cleared: its column is gone"
 +msgstr ""
 +
+ msgid "The password could not be reset. Please try again."
+ msgstr ""
+ 
  # Machine-translated via backfill_po.py (claude-sonnet-4-6) [refs: ar, ca, cs,
  # de, es, fa, fr, ja, lv, mi, nl, pl, pt_BR, ro, ru, sk, sl, sr, sr_Latn, tr,
  # uk, zh, zh_TW]
@@@ -23516,9 -23248,9 +23629,12 @@@ msgstr[1] "
  msgid "Token Request URI"
  msgstr "URI de solicitação de token"
  
 +msgid "Too many preview requests for this dataset. Wait a moment and try again."
 +msgstr ""
 +
+ msgid "Too many requests. Please wait and try again."
+ msgstr ""
+ 
  # Machine-translated via backfill_po.py (claude-sonnet-4-6) [refs: ja]
  #, python-format
  msgid ""
diff --cc superset/translations/pt_BR/LC_MESSAGES/messages.po
index 8ff507a75e4,679f9d38e99..bb025b0984c
--- a/superset/translations/pt_BR/LC_MESSAGES/messages.po
+++ b/superset/translations/pt_BR/LC_MESSAGES/messages.po
@@@ -17,7 -17,7 +17,7 @@@ msgid "
  msgstr ""
  "Project-Id-Version: PROJECT VERSION\n"
  "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
- "POT-Creation-Date: 2026-10-14 20:29+0000\n"
 -"POT-Creation-Date: 2026-10-16 15:10-0400\n"
++"POT-Creation-Date: 2026-10-19 18:27+0000\n"
  "PO-Revision-Date: 2023-05-22 08:04-0400\n"
  "Last-Translator: \n"
  "Language: pt_BR\n"
@@@ -233,6 -233,6 +233,13 @@@ msgstr "porcentagem do total
  msgid "%(alertType)s \"%(alertName)s\" triggered successfully"
  msgstr "%(alertType)s \"%(alertName)s\" ativado com sucesso"
  
++#, python-format
++msgid ""
++"%(column)s is an array column, which cannot be compared against the "
++"single value a transform returns. Mirrored filters on this mapping would "
++"fail at the database. Map a scalar partition column instead."
++msgstr ""
++
  #, python-format
  msgid "%(count)s %(label)s"
  msgstr ""
@@@ -1208,52 -1152,12 +1215,58 @@@ msgstr "Um novo gráfico será criado.
  msgid "A new dashboard will be created."
  msgstr "Um novo painel será criado."
  
 +#, python-format
 +msgid "A partition value transform cannot be longer than %(limit)d characters."
 +msgstr ""
 +
 +#, python-format
 +msgid "A partition value transform cannot call %(functions)s."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform cannot change data. It is evaluated against "
 +"the database to check that it mirrors, so it has to be a read."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform cannot contain a MySQL executable comment, "
 +"which the database executes and every validator reads as a comment."
 +msgstr ""
 +
 +msgid "A partition value transform cannot contain a sub-query."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform cannot name anything through a U&\"...\" "
 +"escape sequence, which the database decodes and every validator reads "
 +"literally."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform cannot read a sequence. NEXTVAL advances the "
 +"sequence every time it is evaluated, and the transform is evaluated on a "
 +"cache schedule."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform must be a single SQL expression, with no "
 +"FROM, WHERE or other clause."
 +msgstr ""
 +
 +msgid "A partition value transform must parse as a single SQL expression."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform must use the :value placeholder where the "
 +"engine will evaluate it, not inside a string literal or a comment."
 +msgstr ""
 +
+ #, python-format
+ msgid ""
+ "A password reset was requested for the %(app_name)s account "
+ "\"%(username)s\"."
+ msgstr ""
+ 
  msgid ""
  "A polar coordinate chart where the circle is broken into wedges of equal "
  "angle, and the value represented by any wedge is illustrated by its area,"
@@@ -4086,6 -3966,6 +4102,10 @@@ msgstr "Título do gráfico
  msgid "Chart type"
  msgstr "Tipo de gráfico"
  
++#, python-format
++msgid "Chart updated: %s"
++msgstr ""
++
  #, fuzzy
  msgid "Chart was saved but could not be added to the selected tab."
  msgstr "O gráfico foi salvo, mas não pôde ser adicionado à guia selecionada."
@@@ -5843,6 -5721,6 +5869,10 @@@ msgstr "Título do painel
  msgid "Dashboard updated %s"
  msgstr "Painel atualizado%s"
  
++#, python-format
++msgid "Dashboard updated: %s"
++msgstr ""
++
  msgid "Dashboard usage"
  msgstr "Uso do painel"
  
@@@ -6102,6 -5980,6 +6132,10 @@@ msgstr "
  msgid "Dataset schema is invalid, caused by: %(error)s"
  msgstr "Esquema do conjunto de dados inválido, causado por: %(error)s"
  
++#, python-format
++msgid "Dataset updated: %s"
++msgstr ""
++
  #, python-format
  msgid "Dataset used by %s chart updated: %s"
  msgid_plural "Dataset used by %s charts updated: %s"
@@@ -15571,6 -15376,6 +15653,12 @@@ msgstr "Visualizações Semânticas
  msgid "Semantic cache"
  msgstr ""
  
++#, python-format
++msgid ""
++"Semantic dimension '%(name)s' has ambiguous variants for grain "
++"'%(grain)s'. Use one dimension per name and grain."
++msgstr ""
++
  #, fuzzy
  msgid "Semantic layer"
  msgstr "Camada semântica"
@@@ -17243,6 -17052,6 +17340,9 @@@ msgstr "
  msgid "Template parameters"
  msgstr "Parâmetros do Modelo"
  
++msgid "Template parameters must be a valid JSON object."
++msgstr ""
++
  #, fuzzy, python-format
  msgid "Template processing error: %(error)s"
  msgstr "Erro de processamento do modelo:%(error)s"
@@@ -18053,15 -17852,9 +18153,18 @@@ msgid_plural "The following parameters 
  msgstr[0] "O parâmetro %(parameters)s em sua consulta é indefinido."
  msgstr[1] ""
  
 +#, python-format
 +msgid ""
 +"The partition column cannot be mapped onto itself. %(name)s is both the "
 +"partition column and the mapped column."
 +msgstr ""
 +
 +msgid "The partition filter mapping was cleared: its column is gone"
 +msgstr ""
 +
+ msgid "The password could not be reset. Please try again."
+ msgstr ""
+ 
  #, python-format
  msgid "The password provided for username \"%(username)s\" is incorrect."
  msgstr "A senha fornecida para o nome de usuário \"%(username)s\" está incorreta."
@@@ -19962,9 -19694,9 +20075,12 @@@ msgstr[1] "
  msgid "Token Request URI"
  msgstr "URI de solicitação de token"
  
 +msgid "Too many preview requests for this dataset. Wait a moment and try again."
 +msgstr ""
 +
+ msgid "Too many requests. Please wait and try again."
+ msgstr ""
+ 
  # Machine-translated via backfill_po.py (claude-sonnet-4-6) [refs: ja]
  #, fuzzy, python-format
  msgid ""
diff --cc superset/translations/ro/LC_MESSAGES/messages.po
index ac463bb2df4,f14bd8a2fcf..7d442fd940e
--- a/superset/translations/ro/LC_MESSAGES/messages.po
+++ b/superset/translations/ro/LC_MESSAGES/messages.po
@@@ -22,7 -22,7 +22,7 @@@ msgid "
  msgstr ""
  "Project-Id-Version: Superset VERSION\n"
  "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
- "POT-Creation-Date: 2026-10-14 20:29+0000\n"
 -"POT-Creation-Date: 2026-10-16 15:10-0400\n"
++"POT-Creation-Date: 2026-10-19 18:27+0000\n"
  "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
  "Last-Translator: FULL NAME <EM...@ADDRESS>\n"
  "Language: ro\n"
@@@ -234,6 -234,6 +234,13 @@@ msgstr "Afișează total
  msgid "%(alertType)s \"%(alertName)s\" triggered successfully"
  msgstr ""
  
++#, python-format
++msgid ""
++"%(column)s is an array column, which cannot be compared against the "
++"single value a transform returns. Mirrored filters on this mapping would "
++"fail at the database. Map a scalar partition column instead."
++msgstr ""
++
  #, python-format
  msgid "%(count)s %(label)s"
  msgstr ""
@@@ -1266,52 -1210,12 +1273,58 @@@ msgstr "Un grafic nou va fi creat.
  msgid "A new dashboard will be created."
  msgstr "Un panou de control va fi creat."
  
 +#, python-format
 +msgid "A partition value transform cannot be longer than %(limit)d characters."
 +msgstr ""
 +
 +#, python-format
 +msgid "A partition value transform cannot call %(functions)s."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform cannot change data. It is evaluated against "
 +"the database to check that it mirrors, so it has to be a read."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform cannot contain a MySQL executable comment, "
 +"which the database executes and every validator reads as a comment."
 +msgstr ""
 +
 +msgid "A partition value transform cannot contain a sub-query."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform cannot name anything through a U&\"...\" "
 +"escape sequence, which the database decodes and every validator reads "
 +"literally."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform cannot read a sequence. NEXTVAL advances the "
 +"sequence every time it is evaluated, and the transform is evaluated on a "
 +"cache schedule."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform must be a single SQL expression, with no "
 +"FROM, WHERE or other clause."
 +msgstr ""
 +
 +msgid "A partition value transform must parse as a single SQL expression."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform must use the :value placeholder where the "
 +"engine will evaluate it, not inside a string literal or a comment."
 +msgstr ""
 +
+ #, python-format
+ msgid ""
+ "A password reset was requested for the %(app_name)s account "
+ "\"%(username)s\"."
+ msgstr ""
+ 
  msgid ""
  "A polar coordinate chart where the circle is broken into wedges of equal "
  "angle, and the value represented by any wedge is illustrated by its area,"
@@@ -4080,6 -3960,6 +4096,10 @@@ msgstr "Titlu grafic
  msgid "Chart type"
  msgstr "Tip grafic"
  
++#, python-format
++msgid "Chart updated: %s"
++msgstr ""
++
  # Machine-translated via backfill_po.py (claude-sonnet-4-6) [refs: de, fr, it,
  # ja, lv, ru, sr, sr_Latn, uk]
  #, fuzzy
@@@ -5760,6 -5638,6 +5786,10 @@@ msgstr "Titlu panou de control
  msgid "Dashboard updated %s"
  msgstr "Tabloul de bord actualizat %s"
  
++#, python-format
++msgid "Dashboard updated: %s"
++msgstr ""
++
  msgid "Dashboard usage"
  msgstr "Utilizare panou de control"
  
@@@ -6019,6 -5897,6 +6049,10 @@@ msgstr "
  msgid "Dataset schema is invalid, caused by: %(error)s"
  msgstr "Schema setului de date este invalidă, cauzată de: %(error)s"
  
++#, python-format
++msgid "Dataset updated: %s"
++msgstr ""
++
  #, python-format
  msgid "Dataset used by %s chart updated: %s"
  msgid_plural "Dataset used by %s charts updated: %s"
@@@ -15186,6 -14991,6 +15268,12 @@@ msgstr "Vizualizări semantice
  msgid "Semantic cache"
  msgstr ""
  
++#, python-format
++msgid ""
++"Semantic dimension '%(name)s' has ambiguous variants for grain "
++"'%(grain)s'. Use one dimension per name and grain."
++msgstr ""
++
  # Machine-translated via backfill_po.py (claude-sonnet-4-6) [refs: de, it, ja,
  # sr, sr_Latn]
  #, fuzzy
@@@ -16842,6 -16651,6 +16939,9 @@@ msgstr "
  msgid "Template parameters"
  msgstr "Parametri șablon"
  
++msgid "Template parameters must be a valid JSON object."
++msgstr ""
++
  #, python-format
  msgid "Template processing error: %(error)s"
  msgstr "Eroare procesare șablon: %(error)s"
@@@ -17611,15 -17410,9 +17711,18 @@@ msgstr[0] "Parametrul %(parameters)s di
  msgstr[1] "Următorii parametri din interogarea dvs. sunt nedefiniți: %(parameters)s."
  msgstr[2] "Următorii parametri din interogarea dvs. sunt nedefiniți: %(parameters)s."
  
 +#, python-format
 +msgid ""
 +"The partition column cannot be mapped onto itself. %(name)s is both the "
 +"partition column and the mapped column."
 +msgstr ""
 +
 +msgid "The partition filter mapping was cleared: its column is gone"
 +msgstr ""
 +
+ msgid "The password could not be reset. Please try again."
+ msgstr ""
+ 
  #, python-format
  msgid "The password provided for username \"%(username)s\" is incorrect."
  msgstr ""
@@@ -19511,9 -19243,9 +19624,12 @@@ msgstr[2] "
  msgid "Token Request URI"
  msgstr "URI de solicitare a tokenului"
  
 +msgid "Too many preview requests for this dataset. Wait a moment and try again."
 +msgstr ""
 +
+ msgid "Too many requests. Please wait and try again."
+ msgstr ""
+ 
  # Machine-translated via backfill_po.py (claude-sonnet-4-6) [refs: ja]
  #, fuzzy, python-format
  msgid ""
diff --cc superset/translations/ru/LC_MESSAGES/messages.po
index a8d945b617a,96fe7c9724f..1dc6d8df628
--- a/superset/translations/ru/LC_MESSAGES/messages.po
+++ b/superset/translations/ru/LC_MESSAGES/messages.po
@@@ -17,7 -17,7 +17,7 @@@ msgid "
  msgstr ""
  "Project-Id-Version: PROJECT VERSION\n"
  "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
- "POT-Creation-Date: 2026-10-14 20:29+0000\n"
 -"POT-Creation-Date: 2026-10-16 15:10-0400\n"
++"POT-Creation-Date: 2026-10-19 18:27+0000\n"
  "PO-Revision-Date: 2026-07-17 09:44+0100\n"
  "Last-Translator: Daniel Checheta\n"
  "Language: ru\n"
@@@ -223,6 -223,6 +223,13 @@@ msgstr "% итого
  msgid "%(alertType)s \"%(alertName)s\" triggered successfully"
  msgstr ""
  
++#, python-format
++msgid ""
++"%(column)s is an array column, which cannot be compared against the "
++"single value a transform returns. Mirrored filters on this mapping would "
++"fail at the database. Map a scalar partition column instead."
++msgstr ""
++
  #, python-format
  msgid "%(count)s %(label)s"
  msgstr ""
@@@ -1194,52 -1138,12 +1201,58 @@@ msgstr "Не удалось созда�
  msgid "A new dashboard will be created."
  msgstr "Новый дашборд будет создан"
  
 +#, python-format
 +msgid "A partition value transform cannot be longer than %(limit)d characters."
 +msgstr ""
 +
 +#, python-format
 +msgid "A partition value transform cannot call %(functions)s."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform cannot change data. It is evaluated against "
 +"the database to check that it mirrors, so it has to be a read."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform cannot contain a MySQL executable comment, "
 +"which the database executes and every validator reads as a comment."
 +msgstr ""
 +
 +msgid "A partition value transform cannot contain a sub-query."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform cannot name anything through a U&\"...\" "
 +"escape sequence, which the database decodes and every validator reads "
 +"literally."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform cannot read a sequence. NEXTVAL advances the "
 +"sequence every time it is evaluated, and the transform is evaluated on a "
 +"cache schedule."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform must be a single SQL expression, with no "
 +"FROM, WHERE or other clause."
 +msgstr ""
 +
 +msgid "A partition value transform must parse as a single SQL expression."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform must use the :value placeholder where the "
 +"engine will evaluate it, not inside a string literal or a comment."
 +msgstr ""
 +
+ #, python-format
+ msgid ""
+ "A password reset was requested for the %(app_name)s account "
+ "\"%(username)s\"."
+ msgstr ""
+ 
  msgid ""
  "A polar coordinate chart where the circle is broken into wedges of equal "
  "angle, and the value represented by any wedge is illustrated by its area,"
@@@ -3810,6 -3690,6 +3826,10 @@@ msgstr "Заголовок диагра
  msgid "Chart type"
  msgstr "Тип диаграммы"
  
++#, python-format
++msgid "Chart updated: %s"
++msgstr ""
++
  msgid "Chart was saved but could not be added to the selected tab."
  msgstr "Диаграмма сохранена, но не может быть добавлена на выбранную вкладку."
  
@@@ -5355,6 -5233,6 +5381,10 @@@ msgstr "Название дашборд
  msgid "Dashboard updated %s"
  msgstr "Дата изменения %s"
  
++#, python-format
++msgid "Dashboard updated: %s"
++msgstr ""
++
  msgid "Dashboard usage"
  msgstr "Использование в дашбордах"
  
@@@ -5593,6 -5471,6 +5623,10 @@@ msgstr "
  msgid "Dataset schema is invalid, caused by: %(error)s"
  msgstr "Схема датасета невалидна, причина: %(error)s"
  
++#, python-format
++msgid "Dataset updated: %s"
++msgstr ""
++
  #, python-format
  msgid "Dataset used by %s chart updated: %s"
  msgid_plural "Dataset used by %s charts updated: %s"
@@@ -14036,6 -13841,6 +14118,12 @@@ msgstr "Представления ан
  msgid "Semantic cache"
  msgstr ""
  
++#, python-format
++msgid ""
++"Semantic dimension '%(name)s' has ambiguous variants for grain "
++"'%(grain)s'. Use one dimension per name and grain."
++msgstr ""
++
  msgid "Semantic layer"
  msgstr "Слой аннотаций"
  
@@@ -15535,6 -15344,6 +15632,9 @@@ msgstr "
  msgid "Template parameters"
  msgstr "Параметры шаблона"
  
++msgid "Template parameters must be a valid JSON object."
++msgstr ""
++
  #, python-format
  msgid "Template processing error: %(error)s"
  msgstr "Ошибка обработки шаблона: %(error)s"
@@@ -16247,15 -16046,9 +16347,18 @@@ msgstr[0] "Параметр %(parameter
  msgstr[1] "Следующие параметры в запросе не определены: %(parameters)s"
  msgstr[2] "Следующие параметры в запросе не определены: %(parameters)s"
  
 +#, python-format
 +msgid ""
 +"The partition column cannot be mapped onto itself. %(name)s is both the "
 +"partition column and the mapped column."
 +msgstr ""
 +
 +msgid "The partition filter mapping was cleared: its column is gone"
 +msgstr ""
 +
+ msgid "The password could not be reset. Please try again."
+ msgstr ""
+ 
  #, python-format
  msgid "The password provided for username \"%(username)s\" is incorrect."
  msgstr "Неверный пароль для пользователя \"%(username)s\""
@@@ -18009,9 -17741,9 +18122,12 @@@ msgstr[2] "
  msgid "Token Request URI"
  msgstr "URI запроса токена"
  
 +msgid "Too many preview requests for this dataset. Wait a moment and try again."
 +msgstr ""
 +
+ msgid "Too many requests. Please wait and try again."
+ msgstr ""
+ 
  #, python-format
  msgid ""
  "Too many sub-slices requested. The maximum allowed is %(max)s, but "
diff --cc superset/translations/sk/LC_MESSAGES/messages.po
index 83c53aea78c,231bf2710a6..a50c233d15d
--- a/superset/translations/sk/LC_MESSAGES/messages.po
+++ b/superset/translations/sk/LC_MESSAGES/messages.po
@@@ -17,7 -17,7 +17,7 @@@ msgid "
  msgstr ""
  "Project-Id-Version: PROJECT VERSION\n"
  "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
- "POT-Creation-Date: 2026-10-14 20:29+0000\n"
 -"POT-Creation-Date: 2026-10-16 15:10-0400\n"
++"POT-Creation-Date: 2026-10-19 18:27+0000\n"
  "PO-Revision-Date: 2026-05-18 15:42+0200\n"
  "Last-Translator: FULL NAME <EM...@ADDRESS>\n"
  "Language: sk\n"
@@@ -224,6 -224,6 +224,13 @@@ msgstr "% z celku
  msgid "%(alertType)s \"%(alertName)s\" triggered successfully"
  msgstr ""
  
++#, python-format
++msgid ""
++"%(column)s is an array column, which cannot be compared against the "
++"single value a transform returns. Mirrored filters on this mapping would "
++"fail at the database. Map a scalar partition column instead."
++msgstr ""
++
  #, python-format
  msgid "%(count)s %(label)s"
  msgstr ""
@@@ -1202,52 -1146,12 +1209,58 @@@ msgstr "Bude vytvorený nový graf.
  msgid "A new dashboard will be created."
  msgstr "Bude vytvorená nová nástenka."
  
 +#, python-format
 +msgid "A partition value transform cannot be longer than %(limit)d characters."
 +msgstr ""
 +
 +#, python-format
 +msgid "A partition value transform cannot call %(functions)s."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform cannot change data. It is evaluated against "
 +"the database to check that it mirrors, so it has to be a read."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform cannot contain a MySQL executable comment, "
 +"which the database executes and every validator reads as a comment."
 +msgstr ""
 +
 +msgid "A partition value transform cannot contain a sub-query."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform cannot name anything through a U&\"...\" "
 +"escape sequence, which the database decodes and every validator reads "
 +"literally."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform cannot read a sequence. NEXTVAL advances the "
 +"sequence every time it is evaluated, and the transform is evaluated on a "
 +"cache schedule."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform must be a single SQL expression, with no "
 +"FROM, WHERE or other clause."
 +msgstr ""
 +
 +msgid "A partition value transform must parse as a single SQL expression."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform must use the :value placeholder where the "
 +"engine will evaluate it, not inside a string literal or a comment."
 +msgstr ""
 +
+ #, python-format
+ msgid ""
+ "A password reset was requested for the %(app_name)s account "
+ "\"%(username)s\"."
+ msgstr ""
+ 
  msgid ""
  "A polar coordinate chart where the circle is broken into wedges of equal "
  "angle, and the value represented by any wedge is illustrated by its area,"
@@@ -3903,6 -3783,6 +3919,10 @@@ msgstr "Názov grafu
  msgid "Chart type"
  msgstr "Typ grafu"
  
++#, python-format
++msgid "Chart updated: %s"
++msgstr ""
++
  #, fuzzy
  msgid "Chart was saved but could not be added to the selected tab."
  msgstr "Graf bol uložený, ale sa nepodarilo pridať do vybraného panela."
@@@ -5501,6 -5379,6 +5527,10 @@@ msgstr "Názov nástenky
  msgid "Dashboard updated %s"
  msgstr "Naposledy aktualizované %s"
  
++#, python-format
++msgid "Dashboard updated: %s"
++msgstr ""
++
  msgid "Dashboard usage"
  msgstr "Použití nástenky"
  
@@@ -5748,6 -5626,6 +5778,10 @@@ msgstr "
  msgid "Dataset schema is invalid, caused by: %(error)s"
  msgstr "Schéma sady dat je neplatné, spôsobené: %(error)s"
  
++#, python-format
++msgid "Dataset updated: %s"
++msgstr ""
++
  #, python-format
  msgid "Dataset used by %s chart updated: %s"
  msgid_plural "Dataset used by %s charts updated: %s"
@@@ -14554,6 -14359,6 +14636,12 @@@ msgstr "Sémantické pohľady
  msgid "Semantic cache"
  msgstr ""
  
++#, python-format
++msgid ""
++"Semantic dimension '%(name)s' has ambiguous variants for grain "
++"'%(grain)s'. Use one dimension per name and grain."
++msgstr ""
++
  #, fuzzy
  msgid "Semantic layer"
  msgstr "Vrstva anotací"
@@@ -16126,6 -15935,6 +16223,9 @@@ msgstr "
  msgid "Template parameters"
  msgstr "Parametre šablony"
  
++msgid "Template parameters must be a valid JSON object."
++msgstr ""
++
  #, fuzzy, python-format
  msgid "Template processing error: %(error)s"
  msgstr "Chyba pri vykonanie šablony: %(error)s"
@@@ -16858,15 -16657,9 +16958,18 @@@ msgstr[0] "Parameter %(parameters)s vo 
  msgstr[1] "Následující parametre vo vašom dotazu nesú definovány: %(parameters)s."
  msgstr[2] "Následující parametre vo vašom dotazu nesú definovány: %(parameters)s."
  
 +#, python-format
 +msgid ""
 +"The partition column cannot be mapped onto itself. %(name)s is both the "
 +"partition column and the mapped column."
 +msgstr ""
 +
 +msgid "The partition filter mapping was cleared: its column is gone"
 +msgstr ""
 +
+ msgid "The password could not be reset. Please try again."
+ msgstr ""
+ 
  #, python-format
  msgid "The password provided for username \"%(username)s\" is incorrect."
  msgstr "Zadané heslo pre používateľské meno „%(username)s“ je nesprávné."
@@@ -18662,9 -18394,9 +18775,12 @@@ msgstr[2] "
  msgid "Token Request URI"
  msgstr "URI žádosti o token"
  
 +msgid "Too many preview requests for this dataset. Wait a moment and try again."
 +msgstr ""
 +
+ msgid "Too many requests. Please wait and try again."
+ msgstr ""
+ 
  # Machine-translated via backfill_po.py (claude-sonnet-4-6) [refs: ja]
  #, fuzzy, python-format
  msgid ""
diff --cc superset/translations/sl/LC_MESSAGES/messages.po
index 63ab4c03b1c,db1459375de..22682581c66
--- a/superset/translations/sl/LC_MESSAGES/messages.po
+++ b/superset/translations/sl/LC_MESSAGES/messages.po
@@@ -17,7 -17,7 +17,7 @@@ msgid "
  msgstr ""
  "Project-Id-Version:  Superset\n"
  "Report-Msgid-Bugs-To: dkrat7 @github.com\n"
- "POT-Creation-Date: 2026-10-14 20:29+0000\n"
 -"POT-Creation-Date: 2026-10-16 15:10-0400\n"
++"POT-Creation-Date: 2026-10-19 18:27+0000\n"
  "PO-Revision-Date: 2026-07-29 16:16+0200\n"
  "Last-Translator: lapor-kris <la...@github.com>\n"
  "Language: sl_SI\n"
@@@ -228,6 -228,6 +228,13 @@@ msgstr "% celote
  msgid "%(alertType)s \"%(alertName)s\" triggered successfully"
  msgstr "%(alertType)s »%(alertName)s« je bil uspešno sprožen"
  
++#, python-format
++msgid ""
++"%(column)s is an array column, which cannot be compared against the "
++"single value a transform returns. Mirrored filters on this mapping would "
++"fail at the database. Map a scalar partition column instead."
++msgstr ""
++
  #, python-format
  msgid "%(count)s %(label)s"
  msgstr ""
@@@ -1240,52 -1184,12 +1247,58 @@@ msgstr "Ustvarjen bo nov grafikon.
  msgid "A new dashboard will be created."
  msgstr "Ustvarjena bo nova nadzorna plošča."
  
 +#, python-format
 +msgid "A partition value transform cannot be longer than %(limit)d characters."
 +msgstr ""
 +
 +#, python-format
 +msgid "A partition value transform cannot call %(functions)s."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform cannot change data. It is evaluated against "
 +"the database to check that it mirrors, so it has to be a read."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform cannot contain a MySQL executable comment, "
 +"which the database executes and every validator reads as a comment."
 +msgstr ""
 +
 +msgid "A partition value transform cannot contain a sub-query."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform cannot name anything through a U&\"...\" "
 +"escape sequence, which the database decodes and every validator reads "
 +"literally."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform cannot read a sequence. NEXTVAL advances the "
 +"sequence every time it is evaluated, and the transform is evaluated on a "
 +"cache schedule."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform must be a single SQL expression, with no "
 +"FROM, WHERE or other clause."
 +msgstr ""
 +
 +msgid "A partition value transform must parse as a single SQL expression."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform must use the :value placeholder where the "
 +"engine will evaluate it, not inside a string literal or a comment."
 +msgstr ""
 +
+ #, python-format
+ msgid ""
+ "A password reset was requested for the %(app_name)s account "
+ "\"%(username)s\"."
+ msgstr ""
+ 
  msgid ""
  "A polar coordinate chart where the circle is broken into wedges of equal "
  "angle, and the value represented by any wedge is illustrated by its area,"
@@@ -3918,6 -3798,6 +3934,10 @@@ msgstr "Naslov grafikona
  msgid "Chart type"
  msgstr "Vrsta grafikona"
  
++#, python-format
++msgid "Chart updated: %s"
++msgstr ""
++
  msgid "Chart was saved but could not be added to the selected tab."
  msgstr ""
  "Grafikon je bil shranjen, vendar ga ni bilo mogoče dodati na izbrani "
@@@ -5511,6 -5389,6 +5537,10 @@@ msgstr "Ime nadzorne plošče
  msgid "Dashboard updated %s"
  msgstr "Nadzorna plošča posodobljena %s"
  
++#, python-format
++msgid "Dashboard updated: %s"
++msgstr ""
++
  msgid "Dashboard usage"
  msgstr "Uporaba nadzorne plošče"
  
@@@ -5750,6 -5628,6 +5780,10 @@@ msgstr "
  msgid "Dataset schema is invalid, caused by: %(error)s"
  msgstr "Shema podatkovnega seta ni veljavna, zaradi napake: %(error)s"
  
++#, python-format
++msgid "Dataset updated: %s"
++msgstr ""
++
  #, python-format
  msgid "Dataset used by %s chart updated: %s"
  msgid_plural "Dataset used by %s charts updated: %s"
@@@ -14441,6 -14246,6 +14523,12 @@@ msgstr "Semantični pogledi
  msgid "Semantic cache"
  msgstr ""
  
++#, python-format
++msgid ""
++"Semantic dimension '%(name)s' has ambiguous variants for grain "
++"'%(grain)s'. Use one dimension per name and grain."
++msgstr ""
++
  msgid "Semantic layer"
  msgstr "Semantična plast"
  
@@@ -15986,6 -15795,6 +16083,9 @@@ msgstr "
  msgid "Template parameters"
  msgstr "Parametri predlog"
  
++msgid "Template parameters must be a valid JSON object."
++msgstr ""
++
  #, python-format
  msgid "Template processing error: %(error)s"
  msgstr "Napaka pri obdelavi predloge: %(error)s"
@@@ -16731,15 -16530,9 +16831,18 @@@ msgstr[1] "V vaši poizvedbi ni definir
  msgstr[2] "V vaši poizvedbi ni definiranih naslednjih parametrov: %(parameters)s."
  msgstr[3] "V vaši poizvedbi ni definiranih naslednjih parametrov: %(parameters)s."
  
 +#, python-format
 +msgid ""
 +"The partition column cannot be mapped onto itself. %(name)s is both the "
 +"partition column and the mapped column."
 +msgstr ""
 +
 +msgid "The partition filter mapping was cleared: its column is gone"
 +msgstr ""
 +
+ msgid "The password could not be reset. Please try again."
+ msgstr ""
+ 
  #, python-format
  msgid "The password provided for username \"%(username)s\" is incorrect."
  msgstr "Geslo za uporabniško ime \"%(username)s\" je napačno."
@@@ -18530,9 -18262,9 +18643,12 @@@ msgstr[3] "
  msgid "Token Request URI"
  msgstr "URI zahteve žetona"
  
 +msgid "Too many preview requests for this dataset. Wait a moment and try again."
 +msgstr ""
 +
+ msgid "Too many requests. Please wait and try again."
+ msgstr ""
+ 
  # Machine-translated via backfill_po.py (claude-sonnet-4-6) [refs: ja]
  #, python-format
  msgid ""
diff --cc superset/translations/sr/LC_MESSAGES/messages.po
index 446ddf5e441,54a752d1dfd..a4662d23bcb
--- a/superset/translations/sr/LC_MESSAGES/messages.po
+++ b/superset/translations/sr/LC_MESSAGES/messages.po
@@@ -21,7 -21,7 +21,7 @@@ msgid "
  msgstr ""
  "Project-Id-Version: Superset VERSION\n"
  "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
- "POT-Creation-Date: 2026-10-14 20:29+0000\n"
 -"POT-Creation-Date: 2026-10-16 15:10-0400\n"
++"POT-Creation-Date: 2026-10-19 18:27+0000\n"
  "PO-Revision-Date: 2026-06-14 13:20+0200\n"
  "Last-Translator: FULL NAME <EM...@ADDRESS>\n"
  "Language: sr\n"
@@@ -251,6 -251,6 +251,13 @@@ msgstr "% од укупног
  msgid "%(alertType)s \"%(alertName)s\" triggered successfully"
  msgstr ""
  
++#, python-format
++msgid ""
++"%(column)s is an array column, which cannot be compared against the "
++"single value a transform returns. Mirrored filters on this mapping would "
++"fail at the database. Map a scalar partition column instead."
++msgstr ""
++
  #, python-format
  msgid "%(count)s %(label)s"
  msgstr ""
@@@ -1375,52 -1319,12 +1382,58 @@@ msgstr "Биће креиран нов�
  msgid "A new dashboard will be created."
  msgstr "Биће креирана нова контролна табла."
  
 +#, python-format
 +msgid "A partition value transform cannot be longer than %(limit)d characters."
 +msgstr ""
 +
 +#, python-format
 +msgid "A partition value transform cannot call %(functions)s."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform cannot change data. It is evaluated against "
 +"the database to check that it mirrors, so it has to be a read."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform cannot contain a MySQL executable comment, "
 +"which the database executes and every validator reads as a comment."
 +msgstr ""
 +
 +msgid "A partition value transform cannot contain a sub-query."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform cannot name anything through a U&\"...\" "
 +"escape sequence, which the database decodes and every validator reads "
 +"literally."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform cannot read a sequence. NEXTVAL advances the "
 +"sequence every time it is evaluated, and the transform is evaluated on a "
 +"cache schedule."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform must be a single SQL expression, with no "
 +"FROM, WHERE or other clause."
 +msgstr ""
 +
 +msgid "A partition value transform must parse as a single SQL expression."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform must use the :value placeholder where the "
 +"engine will evaluate it, not inside a string literal or a comment."
 +msgstr ""
 +
+ #, python-format
+ msgid ""
+ "A password reset was requested for the %(app_name)s account "
+ "\"%(username)s\"."
+ msgstr ""
+ 
  msgid ""
  "A polar coordinate chart where the circle is broken into wedges of equal "
  "angle, and the value represented by any wedge is illustrated by its area,"
@@@ -4608,6 -4488,6 +4624,10 @@@ msgstr "Наслов графикона
  msgid "Chart type"
  msgstr "Тип графикона"
  
++#, python-format
++msgid "Chart updated: %s"
++msgstr ""
++
  # ru, uk]
  msgid "Chart was saved but could not be added to the selected tab."
  msgstr "Графикон је сачуван, али није могао бити додат на изабрану картицу."
@@@ -6519,6 -6397,6 +6545,10 @@@ msgstr "Наслов контролн�
  msgid "Dashboard updated %s"
  msgstr "Контролна табла ажурирана %s"
  
++#, python-format
++msgid "Dashboard updated: %s"
++msgstr ""
++
  # de, es, fa, fr, ja, lv, mi, nl, pt_BR, ru, sk, sl, uk]
  msgid "Dashboard usage"
  msgstr "Коришћење контролне табле"
@@@ -6840,6 -6718,6 +6870,10 @@@ msgstr "
  msgid "Dataset schema is invalid, caused by: %(error)s"
  msgstr "Шема скупа података није ваљана, узрок: %(error)s"
  
++#, python-format
++msgid "Dataset updated: %s"
++msgstr ""
++
  #, python-format
  msgid "Dataset used by %s chart updated: %s"
  msgid_plural "Dataset used by %s charts updated: %s"
@@@ -17257,6 -17062,6 +17339,12 @@@ msgstr "Семантички погле
  msgid "Semantic cache"
  msgstr ""
  
++#, python-format
++msgid ""
++"Semantic dimension '%(name)s' has ambiguous variants for grain "
++"'%(grain)s'. Use one dimension per name and grain."
++msgstr ""
++
  msgid "Semantic layer"
  msgstr "Семантички слој"
  
@@@ -19096,6 -18905,6 +19193,9 @@@ msgstr "
  msgid "Template parameters"
  msgstr "Параметри шаблона"
  
++msgid "Template parameters must be a valid JSON object."
++msgstr ""
++
  # uk]
  #, python-format
  msgid "Template processing error: %(error)s"
@@@ -19917,15 -19716,9 +20017,18 @@@ msgstr[0] "Параметар %(paramet
  msgstr[1] "Следећи параметри у вашем упиту нису дефинисани: %(parameters)s."
  msgstr[2] "Следећи параметри у вашем упиту нису дефинисани: %(parameters)s."
  
 +#, python-format
 +msgid ""
 +"The partition column cannot be mapped onto itself. %(name)s is both the "
 +"partition column and the mapped column."
 +msgstr ""
 +
 +msgid "The partition filter mapping was cleared: its column is gone"
 +msgstr ""
 +
+ msgid "The password could not be reset. Please try again."
+ msgstr ""
+ 
  # de, es, fa, fr, ja, lv, mi, nl, pl, pt_BR, ru, sk, sl, uk, zh, zh_TW]
  #, python-format
  msgid "The password provided for username \"%(username)s\" is incorrect."
@@@ -21954,9 -21686,9 +22067,12 @@@ msgstr[2] "
  msgid "Token Request URI"
  msgstr "URI захтева за токен"
  
 +msgid "Too many preview requests for this dataset. Wait a moment and try again."
 +msgstr ""
 +
+ msgid "Too many requests. Please wait and try again."
+ msgstr ""
+ 
  # Machine-translated via backfill_po.py (claude-sonnet-4-6) [refs: ja]
  #, fuzzy, python-format
  msgid ""
diff --cc superset/translations/sr_Latn/LC_MESSAGES/messages.po
index 813d49c1130,17242d9effb..2d37ba9e825
--- a/superset/translations/sr_Latn/LC_MESSAGES/messages.po
+++ b/superset/translations/sr_Latn/LC_MESSAGES/messages.po
@@@ -21,7 -21,7 +21,7 @@@ msgid "
  msgstr ""
  "Project-Id-Version: Superset VERSION\n"
  "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
- "POT-Creation-Date: 2026-10-14 20:29+0000\n"
 -"POT-Creation-Date: 2026-10-16 15:10-0400\n"
++"POT-Creation-Date: 2026-10-19 18:27+0000\n"
  "PO-Revision-Date: 2026-06-14 13:20+0200\n"
  "Last-Translator: FULL NAME <EM...@ADDRESS>\n"
  "Language: sr_Latn\n"
@@@ -251,6 -251,6 +251,13 @@@ msgstr "% od ukupnog
  msgid "%(alertType)s \"%(alertName)s\" triggered successfully"
  msgstr ""
  
++#, python-format
++msgid ""
++"%(column)s is an array column, which cannot be compared against the "
++"single value a transform returns. Mirrored filters on this mapping would "
++"fail at the database. Map a scalar partition column instead."
++msgstr ""
++
  #, python-format
  msgid "%(count)s %(label)s"
  msgstr ""
@@@ -1375,52 -1319,12 +1382,58 @@@ msgstr "Biće kreiran novi grafikon.
  msgid "A new dashboard will be created."
  msgstr "Biće kreirana nova kontrolna tabla."
  
 +#, python-format
 +msgid "A partition value transform cannot be longer than %(limit)d characters."
 +msgstr ""
 +
 +#, python-format
 +msgid "A partition value transform cannot call %(functions)s."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform cannot change data. It is evaluated against "
 +"the database to check that it mirrors, so it has to be a read."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform cannot contain a MySQL executable comment, "
 +"which the database executes and every validator reads as a comment."
 +msgstr ""
 +
 +msgid "A partition value transform cannot contain a sub-query."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform cannot name anything through a U&\"...\" "
 +"escape sequence, which the database decodes and every validator reads "
 +"literally."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform cannot read a sequence. NEXTVAL advances the "
 +"sequence every time it is evaluated, and the transform is evaluated on a "
 +"cache schedule."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform must be a single SQL expression, with no "
 +"FROM, WHERE or other clause."
 +msgstr ""
 +
 +msgid "A partition value transform must parse as a single SQL expression."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform must use the :value placeholder where the "
 +"engine will evaluate it, not inside a string literal or a comment."
 +msgstr ""
 +
+ #, python-format
+ msgid ""
+ "A password reset was requested for the %(app_name)s account "
+ "\"%(username)s\"."
+ msgstr ""
+ 
  msgid ""
  "A polar coordinate chart where the circle is broken into wedges of equal "
  "angle, and the value represented by any wedge is illustrated by its area,"
@@@ -4611,6 -4491,6 +4627,10 @@@ msgstr "Naslov grafikona
  msgid "Chart type"
  msgstr "Tip grafikona"
  
++#, python-format
++msgid "Chart updated: %s"
++msgstr ""
++
  # ru, uk]
  msgid "Chart was saved but could not be added to the selected tab."
  msgstr "Grafikon je sačuvan, ali nije mogao biti dodat na izabranu karticu."
@@@ -6522,6 -6400,6 +6548,10 @@@ msgstr "Naslov kontrolne table
  msgid "Dashboard updated %s"
  msgstr "Kontrolna tabla ažurirana %s"
  
++#, python-format
++msgid "Dashboard updated: %s"
++msgstr ""
++
  # de, es, fa, fr, ja, lv, mi, nl, pt_BR, ru, sk, sl, uk]
  msgid "Dashboard usage"
  msgstr "Korišćenje kontrolne table"
@@@ -6843,6 -6721,6 +6873,10 @@@ msgstr "
  msgid "Dataset schema is invalid, caused by: %(error)s"
  msgstr "Šema skupa podataka nije valjana, uzrok: %(error)s"
  
++#, python-format
++msgid "Dataset updated: %s"
++msgstr ""
++
  #, python-format
  msgid "Dataset used by %s chart updated: %s"
  msgid_plural "Dataset used by %s charts updated: %s"
@@@ -17264,6 -17069,6 +17346,12 @@@ msgstr "Semantički pogledi
  msgid "Semantic cache"
  msgstr ""
  
++#, python-format
++msgid ""
++"Semantic dimension '%(name)s' has ambiguous variants for grain "
++"'%(grain)s'. Use one dimension per name and grain."
++msgstr ""
++
  msgid "Semantic layer"
  msgstr "Semantički sloj"
  
@@@ -19104,6 -18913,6 +19201,9 @@@ msgstr "
  msgid "Template parameters"
  msgstr "Parametri šablona"
  
++msgid "Template parameters must be a valid JSON object."
++msgstr ""
++
  # uk]
  #, python-format
  msgid "Template processing error: %(error)s"
@@@ -19925,15 -19724,9 +20025,18 @@@ msgstr[0] "Parametar %(parameters)s u v
  msgstr[1] "Sledeći parametri u vašem upitu nisu definisani: %(parameters)s."
  msgstr[2] "Sledeći parametri u vašem upitu nisu definisani: %(parameters)s."
  
 +#, python-format
 +msgid ""
 +"The partition column cannot be mapped onto itself. %(name)s is both the "
 +"partition column and the mapped column."
 +msgstr ""
 +
 +msgid "The partition filter mapping was cleared: its column is gone"
 +msgstr ""
 +
+ msgid "The password could not be reset. Please try again."
+ msgstr ""
+ 
  # de, es, fa, fr, ja, lv, mi, nl, pl, pt_BR, ru, sk, sl, uk, zh, zh_TW]
  #, python-format
  msgid "The password provided for username \"%(username)s\" is incorrect."
@@@ -21971,9 -21703,9 +22084,12 @@@ msgstr[2] "
  msgid "Token Request URI"
  msgstr "URI zahteva za token"
  
 +msgid "Too many preview requests for this dataset. Wait a moment and try again."
 +msgstr ""
 +
+ msgid "Too many requests. Please wait and try again."
+ msgstr ""
+ 
  # Machine-translated via backfill_po.py (claude-sonnet-4-6) [refs: ja]
  #, fuzzy, python-format
  msgid ""
diff --cc superset/translations/ta/LC_MESSAGES/messages.po
index 23c7b6e1f32,472029f8ec6..44a68d25622
--- a/superset/translations/ta/LC_MESSAGES/messages.po
+++ b/superset/translations/ta/LC_MESSAGES/messages.po
@@@ -17,7 -17,7 +17,7 @@@ msgid "
  msgstr ""
  "Project-Id-Version: PROJECT VERSION\n"
  "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
- "POT-Creation-Date: 2026-10-14 20:29+0000\n"
 -"POT-Creation-Date: 2026-10-16 15:10-0400\n"
++"POT-Creation-Date: 2026-10-19 18:27+0000\n"
  "PO-Revision-Date: 2026-03-31 02:00-0700\n"
  "Last-Translator: Maazin Ahamed\n"
  "Language: ta\n"
@@@ -228,6 -228,6 +228,13 @@@ msgstr "மொத்தத்தில�
  msgid "%(alertType)s \"%(alertName)s\" triggered successfully"
  msgstr ""
  
++#, python-format
++msgid ""
++"%(column)s is an array column, which cannot be compared against the "
++"single value a transform returns. Mirrored filters on this mapping would "
++"fail at the database. Map a scalar partition column instead."
++msgstr ""
++
  #, python-format
  msgid "%(count)s %(label)s"
  msgstr ""
@@@ -1168,52 -1112,12 +1175,58 @@@ msgstr "ஒரு புதிய ச�
  msgid "A new dashboard will be created."
  msgstr "ஒரு புதிய டேஷ்போர்டு உருவாக்கப்படும்."
  
 +#, python-format
 +msgid "A partition value transform cannot be longer than %(limit)d characters."
 +msgstr ""
 +
 +#, python-format
 +msgid "A partition value transform cannot call %(functions)s."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform cannot change data. It is evaluated against "
 +"the database to check that it mirrors, so it has to be a read."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform cannot contain a MySQL executable comment, "
 +"which the database executes and every validator reads as a comment."
 +msgstr ""
 +
 +msgid "A partition value transform cannot contain a sub-query."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform cannot name anything through a U&\"...\" "
 +"escape sequence, which the database decodes and every validator reads "
 +"literally."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform cannot read a sequence. NEXTVAL advances the "
 +"sequence every time it is evaluated, and the transform is evaluated on a "
 +"cache schedule."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform must be a single SQL expression, with no "
 +"FROM, WHERE or other clause."
 +msgstr ""
 +
 +msgid "A partition value transform must parse as a single SQL expression."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform must use the :value placeholder where the "
 +"engine will evaluate it, not inside a string literal or a comment."
 +msgstr ""
 +
+ #, python-format
+ msgid ""
+ "A password reset was requested for the %(app_name)s account "
+ "\"%(username)s\"."
+ msgstr ""
+ 
  msgid ""
  "A polar coordinate chart where the circle is broken into wedges of equal "
  "angle, and the value represented by any wedge is illustrated by its area,"
@@@ -3818,6 -3698,6 +3834,10 @@@ msgstr "சார்ட் தலைப
  msgid "Chart type"
  msgstr "சார்ட் வகை"
  
++#, python-format
++msgid "Chart updated: %s"
++msgstr ""
++
  msgid "Chart was saved but could not be added to the selected tab."
  msgstr ""
  "சார்ட் சேமிக்கப்பட்டது, ஆனால் தேர்ந்தெடுக்கப்பட்ட தாவலில் (tab) சேர்க்க "
@@@ -5395,6 -5273,6 +5421,10 @@@ msgstr "டேஷ்போர்டு 
  msgid "Dashboard updated %s"
  msgstr ""
  
++#, python-format
++msgid "Dashboard updated: %s"
++msgstr ""
++
  msgid "Dashboard usage"
  msgstr "டேஷ்போர்டு பயன்பாடு"
  
@@@ -5630,6 -5508,6 +5660,10 @@@ msgstr "
  msgid "Dataset schema is invalid, caused by: %(error)s"
  msgstr "தரவுத்தொகுப்பு ஸ்கீமா செல்லாது, காரணம்: %(error)s"
  
++#, python-format
++msgid "Dataset updated: %s"
++msgstr ""
++
  #, python-format
  msgid "Dataset used by %s chart updated: %s"
  msgid_plural "Dataset used by %s charts updated: %s"
@@@ -13984,6 -13789,6 +14066,12 @@@ msgstr "
  msgid "Semantic cache"
  msgstr ""
  
++#, python-format
++msgid ""
++"Semantic dimension '%(name)s' has ambiguous variants for grain "
++"'%(grain)s'. Use one dimension per name and grain."
++msgstr ""
++
  #, fuzzy
  msgid "Semantic layer"
  msgstr "சிறுகுறிப்பு அடுக்கு"
@@@ -15489,6 -15298,6 +15586,9 @@@ msgstr "செல் தலைப்ப
  msgid "Template parameters"
  msgstr "டெம்ப்ளேட் அளவுருக்கள்"
  
++msgid "Template parameters must be a valid JSON object."
++msgstr ""
++
  #, python-format
  msgid "Template processing error: %(error)s"
  msgstr "டெம்ப்ளேட் செயலாக்க பிழை: %(error)s"
@@@ -16146,15 -15945,9 +16246,18 @@@ msgstr[1] "
  "உங்கள் வினவலில் உள்ள பின்வரும் அளவுருக்கள் வரையறுக்கப்படவில்லை: "
  "%(parameters)s."
  
 +#, python-format
 +msgid ""
 +"The partition column cannot be mapped onto itself. %(name)s is both the "
 +"partition column and the mapped column."
 +msgstr ""
 +
 +msgid "The partition filter mapping was cleared: its column is gone"
 +msgstr ""
 +
+ msgid "The password could not be reset. Please try again."
+ msgstr ""
+ 
  #, python-format
  msgid "The password provided for username \"%(username)s\" is incorrect."
  msgstr "பயனர் பெயர் \"%(username)s\" க்காக வழங்கப்பட்ட கடவுச்சொல் தவறானது."
@@@ -17816,9 -17548,9 +17929,12 @@@ msgstr[1] "
  msgid "Token Request URI"
  msgstr "டோக்கன் கோரிக்கை URI"
  
 +msgid "Too many preview requests for this dataset. Wait a moment and try again."
 +msgstr ""
 +
+ msgid "Too many requests. Please wait and try again."
+ msgstr ""
+ 
  #, python-format
  msgid ""
  "Too many sub-slices requested. The maximum allowed is %(max)s, but "
diff --cc superset/translations/th/LC_MESSAGES/messages.po
index 5780a523ff5,3c29d0393c5..72bc51d5f79
--- a/superset/translations/th/LC_MESSAGES/messages.po
+++ b/superset/translations/th/LC_MESSAGES/messages.po
@@@ -17,7 -17,7 +17,7 @@@ msgid "
  msgstr ""
  "Project-Id-Version: Superset VERSION\n"
  "Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
- "POT-Creation-Date: 2026-10-14 20:29+0000\n"
 -"POT-Creation-Date: 2026-10-16 15:10-0400\n"
++"POT-Creation-Date: 2026-10-19 18:27+0000\n"
  "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
  "Last-Translator: FULL NAME <EM...@ADDRESS>\n"
  "Language: th\n"
@@@ -278,6 -278,6 +278,13 @@@ msgstr "% ของทั้งหม�
  msgid "%(alertType)s \"%(alertName)s\" triggered successfully"
  msgstr ""
  
++#, python-format
++msgid ""
++"%(column)s is an array column, which cannot be compared against the "
++"single value a transform returns. Mirrored filters on this mapping would "
++"fail at the database. Map a scalar partition column instead."
++msgstr ""
++
  #, python-format
  msgid "%(count)s %(label)s"
  msgstr ""
@@@ -1621,52 -1565,12 +1628,58 @@@ msgstr "แผนภูมิใหม�
  msgid "A new dashboard will be created."
  msgstr "แดชบอร์ดใหม่จะถูกสร้างขึ้น"
  
 +#, python-format
 +msgid "A partition value transform cannot be longer than %(limit)d characters."
 +msgstr ""
 +
 +#, python-format
 +msgid "A partition value transform cannot call %(functions)s."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform cannot change data. It is evaluated against "
 +"the database to check that it mirrors, so it has to be a read."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform cannot contain a MySQL executable comment, "
 +"which the database executes and every validator reads as a comment."
 +msgstr ""
 +
 +msgid "A partition value transform cannot contain a sub-query."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform cannot name anything through a U&\"...\" "
 +"escape sequence, which the database decodes and every validator reads "
 +"literally."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform cannot read a sequence. NEXTVAL advances the "
 +"sequence every time it is evaluated, and the transform is evaluated on a "
 +"cache schedule."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform must be a single SQL expression, with no "
 +"FROM, WHERE or other clause."
 +msgstr ""
 +
 +msgid "A partition value transform must parse as a single SQL expression."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform must use the :value placeholder where the "
 +"engine will evaluate it, not inside a string literal or a comment."
 +msgstr ""
 +
+ #, python-format
+ msgid ""
+ "A password reset was requested for the %(app_name)s account "
+ "\"%(username)s\"."
+ msgstr ""
+ 
  msgid ""
  "A polar coordinate chart where the circle is broken into wedges of equal "
  "angle, and the value represented by any wedge is illustrated by its area,"
@@@ -5970,6 -5850,6 +5986,10 @@@ msgstr "ชื่อแผนภูม�
  msgid "Chart type"
  msgstr "ประเภทแผนภูมิ"
  
++#, python-format
++msgid "Chart updated: %s"
++msgstr ""
++
  # Machine-translated via backfill_po.py (claude-sonnet-4-6) [refs: fr, ja, lv,
  # ru, uk]
  #, fuzzy
@@@ -8570,6 -8448,6 +8596,10 @@@ msgstr "ชื่อแดชบอร�
  msgid "Dashboard updated %s"
  msgstr "อัปเดตล่าสุด %s"
  
++#, python-format
++msgid "Dashboard updated: %s"
++msgstr ""
++
  # Machine-translated via backfill_po.py (claude-sonnet-4-6) [refs: ar, ca, cs,
  # de, es, fa, fr, ja, lv, mi, nl, pt_BR, ru, sk, sl, uk]
  #, fuzzy
@@@ -9018,6 -8896,6 +9048,10 @@@ msgstr "
  msgid "Dataset schema is invalid, caused by: %(error)s"
  msgstr "สคีมาชุดข้อมูลไม่ถูกต้อง เกิดจาก: %(error)s"
  
++#, python-format
++msgid "Dataset updated: %s"
++msgstr ""
++
  #, python-format
  msgid "Dataset used by %s chart updated: %s"
  msgid_plural "Dataset used by %s charts updated: %s"
@@@ -23326,6 -23131,6 +23408,12 @@@ msgstr "มุมมองเชิง�
  msgid "Semantic cache"
  msgstr ""
  
++#, python-format
++msgid ""
++"Semantic dimension '%(name)s' has ambiguous variants for grain "
++"'%(grain)s'. Use one dimension per name and grain."
++msgstr ""
++
  # Machine-translated via backfill_po.py (claude-sonnet-4-6) [refs: ar, ca, cs,
  # de, es, fa, fr, it, ja, ko, lv, mi, nl, pl, pt_BR, ru, sk, sl, uk, zh,
  # zh_TW]
@@@ -25890,6 -25699,6 +25987,9 @@@ msgstr "
  msgid "Template parameters"
  msgstr "พารามิเตอร์เทมเพลต"
  
++msgid "Template parameters must be a valid JSON object."
++msgstr ""
++
  # Machine-translated via backfill_po.py (claude-sonnet-4-6) [refs: ja, lv, ru,
  # uk]
  #, fuzzy, python-format
@@@ -26905,15 -26704,9 +27005,18 @@@ msgid "The parameter %(parameters)s in 
  msgid_plural "The following parameters in your query are undefined: %(parameters)s."
  msgstr[0] "พารามิเตอร์ %(parameters)s ในคิวรีของคุณยังไม่ได้ถูกกำหนด"
  
 +#, python-format
 +msgid ""
 +"The partition column cannot be mapped onto itself. %(name)s is both the "
 +"partition column and the mapped column."
 +msgstr ""
 +
 +msgid "The partition filter mapping was cleared: its column is gone"
 +msgstr ""
 +
+ msgid "The password could not be reset. Please try again."
+ msgstr ""
+ 
  # Machine-translated via backfill_po.py (claude-sonnet-4-6) [refs: ar, ca, cs,
  # de, es, fa, fr, ja, lv, mi, nl, pl, pt_BR, ru, sk, sl, uk, zh, zh_TW]
  #, fuzzy, python-format
@@@ -29451,9 -29183,9 +29564,12 @@@ msgstr[0] "
  msgid "Token Request URI"
  msgstr "Token Request URI"
  
 +msgid "Too many preview requests for this dataset. Wait a moment and try again."
 +msgstr ""
 +
+ msgid "Too many requests. Please wait and try again."
+ msgstr ""
+ 
  # Machine-translated via backfill_po.py (claude-sonnet-4-6) [refs: ja]
  #, fuzzy, python-format
  msgid ""
diff --cc superset/translations/tr/LC_MESSAGES/messages.po
index d2015e412e7,89cfd38bd5c..bd8b07fc05d
--- a/superset/translations/tr/LC_MESSAGES/messages.po
+++ b/superset/translations/tr/LC_MESSAGES/messages.po
@@@ -21,7 -21,7 +21,7 @@@ msgid "
  msgstr ""
  "Project-Id-Version: Superset VERSION\n"
  "Report-Msgid-Bugs-To: avsarcoteli@gmail.com\n"
- "POT-Creation-Date: 2026-10-14 20:29+0000\n"
 -"POT-Creation-Date: 2026-10-16 15:10-0400\n"
++"POT-Creation-Date: 2026-10-19 18:27+0000\n"
  "PO-Revision-Date: 2024-02-25 14:00+0300\n"
  "Last-Translator: FULL NAME <EM...@ADDRESS>\n"
  "Language: tr\n"
@@@ -221,6 -221,6 +221,13 @@@ msgstr "% o Toplamı göster
  msgid "%(alertType)s \"%(alertName)s\" triggered successfully"
  msgstr ""
  
++#, python-format
++msgid ""
++"%(column)s is an array column, which cannot be compared against the "
++"single value a transform returns. Mirrored filters on this mapping would "
++"fail at the database. Map a scalar partition column instead."
++msgstr ""
++
  #, python-format
  msgid "%(count)s %(label)s"
  msgstr ""
@@@ -1177,52 -1121,12 +1184,58 @@@ msgstr "Yeni bir grafik oluşturulacakt
  msgid "A new dashboard will be created."
  msgstr "Yeni bir pano oluşturulacak."
  
 +#, python-format
 +msgid "A partition value transform cannot be longer than %(limit)d characters."
 +msgstr ""
 +
 +#, python-format
 +msgid "A partition value transform cannot call %(functions)s."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform cannot change data. It is evaluated against "
 +"the database to check that it mirrors, so it has to be a read."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform cannot contain a MySQL executable comment, "
 +"which the database executes and every validator reads as a comment."
 +msgstr ""
 +
 +msgid "A partition value transform cannot contain a sub-query."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform cannot name anything through a U&\"...\" "
 +"escape sequence, which the database decodes and every validator reads "
 +"literally."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform cannot read a sequence. NEXTVAL advances the "
 +"sequence every time it is evaluated, and the transform is evaluated on a "
 +"cache schedule."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform must be a single SQL expression, with no "
 +"FROM, WHERE or other clause."
 +msgstr ""
 +
 +msgid "A partition value transform must parse as a single SQL expression."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform must use the :value placeholder where the "
 +"engine will evaluate it, not inside a string literal or a comment."
 +msgstr ""
 +
+ #, python-format
+ msgid ""
+ "A password reset was requested for the %(app_name)s account "
+ "\"%(username)s\"."
+ msgstr ""
+ 
  msgid ""
  "A polar coordinate chart where the circle is broken into wedges of equal "
  "angle, and the value represented by any wedge is illustrated by its area,"
@@@ -3975,6 -3855,6 +3991,10 @@@ msgstr "Grafik başlığı
  msgid "Chart type"
  msgstr "Grafik başlığı"
  
++#, python-format
++msgid "Chart updated: %s"
++msgstr ""
++
  #, fuzzy
  msgid "Chart was saved but could not be added to the selected tab."
  msgstr "Grafikler silinemedi."
@@@ -5634,6 -5512,6 +5660,10 @@@ msgstr "Gösterim Paneli başlığı
  msgid "Dashboard updated %s"
  msgstr "Pano güncellendi %s"
  
++#, python-format
++msgid "Dashboard updated: %s"
++msgstr ""
++
  msgid "Dashboard usage"
  msgstr "Gösterim Paneli kullanımı"
  
@@@ -5892,6 -5770,6 +5922,10 @@@ msgstr "
  msgid "Dataset schema is invalid, caused by: %(error)s"
  msgstr "Dataset şeması geçersizdir, neden:   %(error)s "
  
++#, python-format
++msgid "Dataset updated: %s"
++msgstr ""
++
  #, python-format
  msgid "Dataset used by %s chart updated: %s"
  msgid_plural "Dataset used by %s charts updated: %s"
@@@ -14904,6 -14709,6 +14986,12 @@@ msgstr "Semantik Görünümler
  msgid "Semantic cache"
  msgstr ""
  
++#, python-format
++msgid ""
++"Semantic dimension '%(name)s' has ambiguous variants for grain "
++"'%(grain)s'. Use one dimension per name and grain."
++msgstr ""
++
  # Machine-translated via backfill_po.py (claude-sonnet-4-6) [refs: de, sr,
  # sr_Latn]
  #, fuzzy
@@@ -16536,6 -16345,6 +16633,9 @@@ msgstr "
  msgid "Template parameters"
  msgstr "Şablon parametreleri"
  
++msgid "Template parameters must be a valid JSON object."
++msgstr ""
++
  #, fuzzy, python-format
  msgid "Template processing error: %(error)s"
  msgstr "Hata: %(error)s"
@@@ -17267,15 -17066,9 +17367,18 @@@ msgid "The parameter %(parameters)s in 
  msgid_plural "The following parameters in your query are undefined: %(parameters)s."
  msgstr[0] "Parametre   %(parameters)s in your query is undefined."
  
 +#, python-format
 +msgid ""
 +"The partition column cannot be mapped onto itself. %(name)s is both the "
 +"partition column and the mapped column."
 +msgstr ""
 +
 +msgid "The partition filter mapping was cleared: its column is gone"
 +msgstr ""
 +
+ msgid "The password could not be reset. Please try again."
+ msgstr ""
+ 
  #, python-format
  msgid "The password provided for username \"%(username)s\" is incorrect."
  msgstr "Kullanıcı adı \"  %(username)s \" için sağlanan şifre yanlış."
@@@ -19097,9 -18829,9 +19210,12 @@@ msgstr[0] "
  msgid "Token Request URI"
  msgstr "Hediye İste URIRIRI"
  
 +msgid "Too many preview requests for this dataset. Wait a moment and try again."
 +msgstr ""
 +
+ msgid "Too many requests. Please wait and try again."
+ msgstr ""
+ 
  # Machine-translated via backfill_po.py (claude-sonnet-4-6) [refs: ja]
  #, fuzzy, python-format
  msgid ""
diff --cc superset/translations/uk/LC_MESSAGES/messages.po
index 36c7bc7c0cf,bd100e210fe..d7eb36d9d85
--- a/superset/translations/uk/LC_MESSAGES/messages.po
+++ b/superset/translations/uk/LC_MESSAGES/messages.po
@@@ -18,7 -18,7 +18,7 @@@ msgid "
  msgstr ""
  "Project-Id-Version:  \n"
  "Report-Msgid-Bugs-To: ted.korostiled@gmail.com\n"
- "POT-Creation-Date: 2026-10-14 20:29+0000\n"
 -"POT-Creation-Date: 2026-10-16 15:10-0400\n"
++"POT-Creation-Date: 2026-10-19 18:27+0000\n"
  "PO-Revision-Date: 2026-04-30 22:04+0300\n"
  "Last-Translator: Danylo Korostil\n"
  "Language: uk\n"
@@@ -224,6 -224,6 +224,13 @@@ msgstr "%  всього
  msgid "%(alertType)s \"%(alertName)s\" triggered successfully"
  msgstr ""
  
++#, python-format
++msgid ""
++"%(column)s is an array column, which cannot be compared against the "
++"single value a transform returns. Mirrored filters on this mapping would "
++"fail at the database. Map a scalar partition column instead."
++msgstr ""
++
  #, python-format
  msgid "%(count)s %(label)s"
  msgstr ""
@@@ -1232,52 -1176,12 +1239,58 @@@ msgstr "Створиться нова �
  msgid "A new dashboard will be created."
  msgstr "Створиться новий звіт."
  
 +#, python-format
 +msgid "A partition value transform cannot be longer than %(limit)d characters."
 +msgstr ""
 +
 +#, python-format
 +msgid "A partition value transform cannot call %(functions)s."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform cannot change data. It is evaluated against "
 +"the database to check that it mirrors, so it has to be a read."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform cannot contain a MySQL executable comment, "
 +"which the database executes and every validator reads as a comment."
 +msgstr ""
 +
 +msgid "A partition value transform cannot contain a sub-query."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform cannot name anything through a U&\"...\" "
 +"escape sequence, which the database decodes and every validator reads "
 +"literally."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform cannot read a sequence. NEXTVAL advances the "
 +"sequence every time it is evaluated, and the transform is evaluated on a "
 +"cache schedule."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform must be a single SQL expression, with no "
 +"FROM, WHERE or other clause."
 +msgstr ""
 +
 +msgid "A partition value transform must parse as a single SQL expression."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform must use the :value placeholder where the "
 +"engine will evaluate it, not inside a string literal or a comment."
 +msgstr ""
 +
+ #, python-format
+ msgid ""
+ "A password reset was requested for the %(app_name)s account "
+ "\"%(username)s\"."
+ msgstr ""
+ 
  msgid ""
  "A polar coordinate chart where the circle is broken into wedges of equal "
  "angle, and the value represented by any wedge is illustrated by its area,"
@@@ -3873,6 -3753,6 +3889,10 @@@ msgstr "Назва діаграми
  msgid "Chart type"
  msgstr "Тип діаграми"
  
++#, python-format
++msgid "Chart updated: %s"
++msgstr ""
++
  msgid "Chart was saved but could not be added to the selected tab."
  msgstr "Діаграму збережено, але не вдалося додати її до вибраної вкладки."
  
@@@ -5443,6 -5321,6 +5469,10 @@@ msgstr "Заголовок звіту
  msgid "Dashboard updated %s"
  msgstr "Востаннє оновлено %s"
  
++#, python-format
++msgid "Dashboard updated: %s"
++msgstr ""
++
  msgid "Dashboard usage"
  msgstr "Використання звіту"
  
@@@ -5691,6 -5569,6 +5721,10 @@@ msgstr "
  msgid "Dataset schema is invalid, caused by: %(error)s"
  msgstr "Схема набору даних некоректна, через помилку: %(error)s"
  
++#, python-format
++msgid "Dataset updated: %s"
++msgstr ""
++
  #, python-format
  msgid "Dataset used by %s chart updated: %s"
  msgid_plural "Dataset used by %s charts updated: %s"
@@@ -14278,6 -14083,6 +14360,12 @@@ msgstr "Семантичні вигля
  msgid "Semantic cache"
  msgstr ""
  
++#, python-format
++msgid ""
++"Semantic dimension '%(name)s' has ambiguous variants for grain "
++"'%(grain)s'. Use one dimension per name and grain."
++msgstr ""
++
  #, fuzzy
  msgid "Semantic layer"
  msgstr "Анотаційний шар"
@@@ -15828,6 -15637,6 +15925,9 @@@ msgstr "
  msgid "Template parameters"
  msgstr "Параметри шаблону"
  
++msgid "Template parameters must be a valid JSON object."
++msgstr ""
++
  #, python-format
  msgid "Template processing error: %(error)s"
  msgstr "Помилка опрацювання шаблону: %(error)s"
@@@ -16550,15 -16349,9 +16650,18 @@@ msgstr[1] "Параметри, які �
  msgstr[2] "Параметри, які не визначено, у вашому запиті: %(parameters)s."
  msgstr[3] "Параметр %(parameters)s у вашому запиті не визначено."
  
 +#, python-format
 +msgid ""
 +"The partition column cannot be mapped onto itself. %(name)s is both the "
 +"partition column and the mapped column."
 +msgstr ""
 +
 +msgid "The partition filter mapping was cleared: its column is gone"
 +msgstr ""
 +
+ msgid "The password could not be reset. Please try again."
+ msgstr ""
+ 
  #, python-format
  msgid "The password provided for username \"%(username)s\" is incorrect."
  msgstr "Неправильний пароль для користувача «%(username)s»."
@@@ -18324,9 -18056,9 +18437,12 @@@ msgstr[3] "
  msgid "Token Request URI"
  msgstr "Посилання запиту жетону"
  
 +msgid "Too many preview requests for this dataset. Wait a moment and try again."
 +msgstr ""
 +
+ msgid "Too many requests. Please wait and try again."
+ msgstr ""
+ 
  # Machine-translated via backfill_po.py (claude-sonnet-4-6) [refs: ja]
  #, fuzzy, python-format
  msgid ""
diff --cc superset/translations/zh/LC_MESSAGES/messages.po
index 599ec2b1633,5bfa33ea3c5..21158bd5ac5
--- a/superset/translations/zh/LC_MESSAGES/messages.po
+++ b/superset/translations/zh/LC_MESSAGES/messages.po
@@@ -18,7 -18,7 +18,7 @@@ msgid "
  msgstr ""
  "Project-Id-Version: Apache Superset 0.22.1\n"
  "Report-Msgid-Bugs-To: zhouyao94@qq.com\n"
- "POT-Creation-Date: 2026-10-14 20:29+0000\n"
 -"POT-Creation-Date: 2026-10-16 15:10-0400\n"
++"POT-Creation-Date: 2026-10-19 18:27+0000\n"
  "PO-Revision-Date: 2019-01-04 22:19+0800\n"
  "Last-Translator: cdmikechen\n"
  "Language: zh\n"
@@@ -229,6 -229,6 +229,13 @@@ msgstr "总计的 %
  msgid "%(alertType)s \"%(alertName)s\" triggered successfully"
  msgstr "%(alertType)s \"%(alertName)s\" 触发成功"
  
++#, python-format
++msgid ""
++"%(column)s is an array column, which cannot be compared against the "
++"single value a transform returns. Mirrored filters on this mapping would "
++"fail at the database. Map a scalar partition column instead."
++msgstr ""
++
  #, python-format
  msgid "%(count)s %(label)s"
  msgstr ""
@@@ -1219,52 -1163,12 +1226,58 @@@ msgstr "将会创建一个新图表
  msgid "A new dashboard will be created."
  msgstr "将创建一个新看板。"
  
 +#, python-format
 +msgid "A partition value transform cannot be longer than %(limit)d characters."
 +msgstr ""
 +
 +#, python-format
 +msgid "A partition value transform cannot call %(functions)s."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform cannot change data. It is evaluated against "
 +"the database to check that it mirrors, so it has to be a read."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform cannot contain a MySQL executable comment, "
 +"which the database executes and every validator reads as a comment."
 +msgstr ""
 +
 +msgid "A partition value transform cannot contain a sub-query."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform cannot name anything through a U&\"...\" "
 +"escape sequence, which the database decodes and every validator reads "
 +"literally."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform cannot read a sequence. NEXTVAL advances the "
 +"sequence every time it is evaluated, and the transform is evaluated on a "
 +"cache schedule."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform must be a single SQL expression, with no "
 +"FROM, WHERE or other clause."
 +msgstr ""
 +
 +msgid "A partition value transform must parse as a single SQL expression."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform must use the :value placeholder where the "
 +"engine will evaluate it, not inside a string literal or a comment."
 +msgstr ""
 +
+ #, python-format
+ msgid ""
+ "A password reset was requested for the %(app_name)s account "
+ "\"%(username)s\"."
+ msgstr ""
+ 
  msgid ""
  "A polar coordinate chart where the circle is broken into wedges of equal "
  "angle, and the value represented by any wedge is illustrated by its area,"
@@@ -3920,6 -3800,6 +3936,10 @@@ msgstr "图表标题
  msgid "Chart type"
  msgstr "图表类型"
  
++#, python-format
++msgid "Chart updated: %s"
++msgstr ""
++
  msgid "Chart was saved but could not be added to the selected tab."
  msgstr "图表已保存,但无法添加到所选标签页。"
  
@@@ -5560,6 -5438,6 +5586,10 @@@ msgstr "看板标题
  msgid "Dashboard updated %s"
  msgstr "仪表板已更新 %s"
  
++#, python-format
++msgid "Dashboard updated: %s"
++msgstr ""
++
  msgid "Dashboard usage"
  msgstr "看板使用情况"
  
@@@ -5807,6 -5685,6 +5837,10 @@@ msgstr "
  msgid "Dataset schema is invalid, caused by: %(error)s"
  msgstr "数据集模式无效,原因:%(error)s"
  
++#, python-format
++msgid "Dataset updated: %s"
++msgstr ""
++
  #, python-format
  msgid "Dataset used by %s chart updated: %s"
  msgid_plural "Dataset used by %s charts updated: %s"
@@@ -14740,6 -14545,6 +14822,12 @@@ msgstr "语义视图
  msgid "Semantic cache"
  msgstr ""
  
++#, python-format
++msgid ""
++"Semantic dimension '%(name)s' has ambiguous variants for grain "
++"'%(grain)s'. Use one dimension per name and grain."
++msgstr ""
++
  msgid "Semantic layer"
  msgstr "语义层"
  
@@@ -16324,6 -16133,6 +16421,9 @@@ msgstr "单元格标题的模板。使�
  msgid "Template parameters"
  msgstr "模板参数"
  
++msgid "Template parameters must be a valid JSON object."
++msgstr ""
++
  #, fuzzy, python-format
  msgid "Template processing error: %(error)s"
  msgstr "错误:%(error)s"
@@@ -17035,15 -16834,9 +17135,18 @@@ msgid "The parameter %(parameters)s in 
  msgid_plural "The following parameters in your query are undefined: %(parameters)s."
  msgstr[0] "查询中的以下参数未定义:%(parameters)s 。"
  
 +#, python-format
 +msgid ""
 +"The partition column cannot be mapped onto itself. %(name)s is both the "
 +"partition column and the mapped column."
 +msgstr ""
 +
 +msgid "The partition filter mapping was cleared: its column is gone"
 +msgstr ""
 +
+ msgid "The password could not be reset. Please try again."
+ msgstr ""
+ 
  #, python-format
  msgid "The password provided for username \"%(username)s\" is incorrect."
  msgstr "用户名 \"%(username)s\" 提供的密码不正确。"
@@@ -18765,9 -18497,9 +18878,12 @@@ msgstr[0] "
  msgid "Token Request URI"
  msgstr "令牌请求URI"
  
 +msgid "Too many preview requests for this dataset. Wait a moment and try again."
 +msgstr ""
 +
+ msgid "Too many requests. Please wait and try again."
+ msgstr ""
+ 
  # Machine-translated via backfill_po.py (claude-sonnet-4-6) [refs: ja]
  #, python-format
  msgid ""
diff --cc superset/translations/zh_TW/LC_MESSAGES/messages.po
index 238ae0a3730,b95ab36f472..b4d8127991c
--- a/superset/translations/zh_TW/LC_MESSAGES/messages.po
+++ b/superset/translations/zh_TW/LC_MESSAGES/messages.po
@@@ -17,7 -17,7 +17,7 @@@ msgid "
  msgstr ""
  "Project-Id-Version: Apache Superset 0.22.1\n"
  "Report-Msgid-Bugs-To: bestlong168@gmail.com\n"
- "POT-Creation-Date: 2026-10-14 20:29+0000\n"
 -"POT-Creation-Date: 2026-10-16 15:10-0400\n"
++"POT-Creation-Date: 2026-10-19 18:27+0000\n"
  "PO-Revision-Date: 2019-01-04 22:19+0800\n"
  "Last-Translator: Shao Yu-Lung <be...@gmail.com>\n"
  "Language: zh_TW\n"
@@@ -227,6 -227,6 +227,13 @@@ msgstr "% 顯示總計
  msgid "%(alertType)s \"%(alertName)s\" triggered successfully"
  msgstr ""
  
++#, python-format
++msgid ""
++"%(column)s is an array column, which cannot be compared against the "
++"single value a transform returns. Mirrored filters on this mapping would "
++"fail at the database. Map a scalar partition column instead."
++msgstr ""
++
  #, python-format
  msgid "%(count)s %(label)s"
  msgstr ""
@@@ -1238,52 -1182,12 +1245,58 @@@ msgstr "將會創建一個新圖表
  msgid "A new dashboard will be created."
  msgstr "將會創建一個新看板"
  
 +#, python-format
 +msgid "A partition value transform cannot be longer than %(limit)d characters."
 +msgstr ""
 +
 +#, python-format
 +msgid "A partition value transform cannot call %(functions)s."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform cannot change data. It is evaluated against "
 +"the database to check that it mirrors, so it has to be a read."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform cannot contain a MySQL executable comment, "
 +"which the database executes and every validator reads as a comment."
 +msgstr ""
 +
 +msgid "A partition value transform cannot contain a sub-query."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform cannot name anything through a U&\"...\" "
 +"escape sequence, which the database decodes and every validator reads "
 +"literally."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform cannot read a sequence. NEXTVAL advances the "
 +"sequence every time it is evaluated, and the transform is evaluated on a "
 +"cache schedule."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform must be a single SQL expression, with no "
 +"FROM, WHERE or other clause."
 +msgstr ""
 +
 +msgid "A partition value transform must parse as a single SQL expression."
 +msgstr ""
 +
 +msgid ""
 +"A partition value transform must use the :value placeholder where the "
 +"engine will evaluate it, not inside a string literal or a comment."
 +msgstr ""
 +
+ #, python-format
+ msgid ""
+ "A password reset was requested for the %(app_name)s account "
+ "\"%(username)s\"."
+ msgstr ""
+ 
  msgid ""
  "A polar coordinate chart where the circle is broken into wedges of equal "
  "angle, and the value represented by any wedge is illustrated by its area,"
@@@ -4119,6 -3999,6 +4135,10 @@@ msgstr "圖表標題
  msgid "Chart type"
  msgstr "圖表標題"
  
++#, python-format
++msgid "Chart updated: %s"
++msgstr ""
++
  #, fuzzy
  msgid "Chart was saved but could not be added to the selected tab."
  msgstr "圖表無法删除。"
@@@ -5887,6 -5765,6 +5913,10 @@@ msgstr "看板
  msgid "Dashboard updated %s"
  msgstr "最後更新 %s"
  
++#, python-format
++msgid "Dashboard updated: %s"
++msgstr ""
++
  #, fuzzy
  msgid "Dashboard usage"
  msgstr "看板"
@@@ -6150,6 -6028,6 +6180,10 @@@ msgstr "
  msgid "Dataset schema is invalid, caused by: %(error)s"
  msgstr "資料集結構描述無效,原因:%(error)s"
  
++#, python-format
++msgid "Dataset updated: %s"
++msgstr ""
++
  #, python-format
  msgid "Dataset used by %s chart updated: %s"
  msgid_plural "Dataset used by %s charts updated: %s"
@@@ -15679,6 -15484,6 +15761,12 @@@ msgstr "語義視圖
  msgid "Semantic cache"
  msgstr ""
  
++#, python-format
++msgid ""
++"Semantic dimension '%(name)s' has ambiguous variants for grain "
++"'%(grain)s'. Use one dimension per name and grain."
++msgstr ""
++
  #, fuzzy
  msgid "Semantic layer"
  msgstr "注释層"
@@@ -17375,6 -17184,6 +17472,9 @@@ msgstr "
  msgid "Template parameters"
  msgstr "模板参數"
  
++msgid "Template parameters must be a valid JSON object."
++msgstr ""
++
  #, fuzzy, python-format
  msgid "Template processing error: %(error)s"
  msgstr "錯誤:%(error)s"
@@@ -18135,15 -17934,9 +18235,18 @@@ msgid "The parameter %(parameters)s in 
  msgid_plural "The following parameters in your query are undefined: %(parameters)s."
  msgstr[0] "查詢中的以下参數未定義:%(parameters)s 。"
  
 +#, python-format
 +msgid ""
 +"The partition column cannot be mapped onto itself. %(name)s is both the "
 +"partition column and the mapped column."
 +msgstr ""
 +
 +msgid "The partition filter mapping was cleared: its column is gone"
 +msgstr ""
 +
+ msgid "The password could not be reset. Please try again."
+ msgstr ""
+ 
  #, python-format
  msgid "The password provided for username \"%(username)s\" is incorrect."
  msgstr "用戶名 \"%(username)s\" 提供的密碼不正確。"
@@@ -19971,9 -19703,9 +20084,12 @@@ msgstr[0] "
  msgid "Token Request URI"
  msgstr "權杖請求 URI"
  
 +msgid "Too many preview requests for this dataset. Wait a moment and try again."
 +msgstr ""
 +
+ msgid "Too many requests. Please wait and try again."
+ msgstr ""
+ 
  # Machine-translated via backfill_po.py (claude-sonnet-4-6) [refs: ja]
  #, fuzzy, python-format
  msgid ""
diff --cc superset/views/datasource/views.py
index 3b4f2fe1f49,2d7a56e22cf..eb5205f82df
--- a/superset/views/datasource/views.py
+++ b/superset/views/datasource/views.py
@@@ -30,14 -29,10 +30,16 @@@ from superset import db, event_logger, 
  from superset.commands.dataset.exceptions import (
      DatasetForbiddenError,
      DatasetNotFoundError,
+     get_template_render_error_msg,
+     TEMPLATE_RENDER_ERRORS,
  )
  from superset.connectors.sqla.models import SqlaTable
 +from superset.connectors.sqla.partition_mapping import (
 +    drop_unmapped_value_transforms,
 +    stored_expression_error,
 +    validate_partition_mapping,
 +    validate_transform,
 +)
  from superset.connectors.sqla.utils import get_physical_table_metadata
  from superset.daos.dashboard import DashboardDAO
  from superset.daos.dataset import DatasetDAO
diff --cc tests/unit_tests/commands/dataset/test_create.py
index 8f2134462de,ddc2856cc88..8dfeba1ebe1
--- a/tests/unit_tests/commands/dataset/test_create.py
+++ b/tests/unit_tests/commands/dataset/test_create.py
@@@ -31,7 -36,7 +36,8 @@@ from superset.exceptions import 
      SupersetTimeoutException,
  )
  from superset.models.core import Database
+ from superset.sql.parse import Table
 +from tests.unit_tests.conftest import with_feature_flags
  
  
  def _validate_virtual_dataset(
diff --cc tests/unit_tests/commands/dataset/update_test.py
index c40e5ac80fd,27a878ac554..f907bb6dc9e
--- a/tests/unit_tests/commands/dataset/update_test.py
+++ b/tests/unit_tests/commands/dataset/update_test.py
@@@ -95,8 -96,8 +97,9 @@@ def test_update_dataset_sql_authorized_
      mock_dataset.catalog = "catalog"
      mock_dataset.schema = "public"
      mock_dataset.table_name = "test_table"
+     mock_dataset.template_params = None
      mock_dataset.editors = []  # No editors to avoid computation issues
 +    mock_dataset.partition_column = None  # No partition filter mapping
  
      mock_dataset_dao.find_by_id.return_value = mock_dataset
      mock_dataset_dao.get_database_by_id.return_value = mock_database
@@@ -141,8 -152,8 +154,9 @@@ def test_update_dataset_sql_unauthorize
      mock_dataset.catalog = "catalog"
      mock_dataset.schema = "public"
      mock_dataset.table_name = "test_table"
+     mock_dataset.template_params = None
      mock_dataset.editors = []  # No editors to avoid computation issues
 +    mock_dataset.partition_column = None  # No partition filter mapping
  
      mock_dataset_dao.find_by_id.return_value = mock_dataset
      mock_dataset_dao.get_database_by_id.return_value = mock_database
@@@ -205,8 -268,9 +271,10 @@@ def test_update_dataset_database_id_cha
      mock_dataset.catalog = "catalog"
      mock_dataset.schema = "public"
      mock_dataset.table_name = "test_table"
+     mock_dataset.sql = None  # physical dataset
+     mock_dataset.template_params = None
      mock_dataset.editors = []  # No editors to avoid computation issues
 +    mock_dataset.partition_column = None  # No partition filter mapping
  
      mock_dataset_dao.find_by_id.return_value = mock_dataset
      mock_dataset_dao.get_database_by_id.return_value = mock_new_database
@@@ -262,8 -330,9 +334,10 @@@ def test_update_dataset_database_id_cha
      mock_dataset.catalog = "catalog"
      mock_dataset.schema = "public"
      mock_dataset.table_name = "test_table"
+     mock_dataset.sql = None  # physical dataset
+     mock_dataset.template_params = None
      mock_dataset.editors = []  # No editors to avoid computation issues
 +    mock_dataset.partition_column = None  # No partition filter mapping
  
      mock_dataset_dao.find_by_id.return_value = mock_dataset
      mock_dataset_dao.get_database_by_id.return_value = mock_new_database
diff --cc tests/unit_tests/dashboards/datasets_test.py
index ab416128ead,0c81cd1a549..1f2a85f4e80
--- a/tests/unit_tests/dashboards/datasets_test.py
+++ b/tests/unit_tests/dashboards/datasets_test.py
@@@ -359,112 -358,64 +361,175 @@@ def test_dashboard_table_serialization_
          dashboard.datasets_trimmed_for_slices()
  
  
+ @pytest.mark.parametrize("can_access_ambiguous", [True, False])
+ def test_dashboard_datasets_isolate_ambiguous_view(
+     client: Any,
+     full_api_access: None,
+     semantic_view: SemanticView,
+     can_access_ambiguous: bool,
+ ) -> None:
+     """One ambiguous view cannot hide healthy metadata or leak it without access."""
+     ambiguous: SemanticView = SemanticView(
+         id=2,
+         name="Ambiguous view",
+         semantic_layer=semantic_view.semantic_layer,
+     )
+     implementation: MagicMock = MagicMock()
+     implementation.get_dimensions.return_value = {
+         Dimension("one", "event_time", pa.timestamp("us"), grain=Grains.MONTH),
+         Dimension("two", "event_time", pa.timestamp("us"), grain=Grains.MONTH),
+     }
+     implementation.get_metrics.return_value = []
+     implementation.features = frozenset()
+     implementation.uid.return_value = "provider-ambiguous"
+     ambiguous.__dict__["implementation"] = implementation
+     broken_chart: Slice = Slice(datasource_id=2, datasource_type="semantic_view")
+     broken_chart.semantic_view = ambiguous
+     healthy_chart: Slice = Slice(
+         datasource_id=semantic_view.id, datasource_type="semantic_view"
+     )
+     healthy_chart.semantic_view = semantic_view
+     dashboard: Dashboard = Dashboard(id=17, slices=[broken_chart, healthy_chart])
+     with (
+         patch(
+             "superset.daos.dashboard.DashboardDAO.get_by_id_or_slug",
+             return_value=dashboard,
+         ),
+         patch(
+             "superset.models.dashboard.security_manager.can_access_datasource",
+             side_effect=lambda datasource: datasource is semantic_view
+             or can_access_ambiguous,
+         ),
+         patch(
+             "superset.dashboards.schemas.security_manager.is_guest_user",
+             return_value=False,
+         ),
+     ):
+         response: Any = client.get("/api/v1/dashboard/17/datasets")
+     assert response.status_code == 200
+     datasets: dict[str, dict[str, Any]] = {
+         item["uid"]: item for item in response.json["result"]
+     }
+     assert set(datasets) == {"1__semantic_view", "2__semantic_view"}
+     assert datasets["1__semantic_view"]["columns"]
+     assert "metadata_error" not in datasets["1__semantic_view"]
+     assert "columns" not in datasets["2__semantic_view"]
+     if can_access_ambiguous:
+         assert datasets["2__semantic_view"]["metadata_error"] == (
+             "Semantic dimension 'event_time' has ambiguous variants for grain 'P1M'. "
+             "Use one dimension per name and grain."
+         )
+     else:
+         assert "metadata_error" not in datasets["2__semantic_view"]
+         implementation.get_dimensions.assert_not_called()
++
++
 +@pytest.mark.parametrize("can_access", [True, False])
 +def test_an_inaccessible_dashboard_dataset_hides_its_partition_mapping(
 +    can_access: bool,
 +) -> None:
 +    """
 +    The mapping names two of the dataset's columns and carries the raw value
 +    transform in `evaluated_transform`, so it belongs with `columns` and
 +    `main_dttm_col` in `DASHBOARD_DATASET_INACCESSIBLE_FIELDS`. Without it,
 +    `GET /api/v1/dashboard/<id>/datasets` handed all three to a Gamma user with
 +    dashboard access and no grant on the dataset.
 +    """
 +    table: SqlaTable = SqlaTable(id=7, table_name="orders")
 +    chart: Slice = Slice(datasource_id=7, datasource_type="table")
 +    chart.table = table
 +    dashboard: Dashboard = Dashboard(slices=[chart])
 +    payload = {
 +        "id": 7,
 +        "uid": "7__table",
 +        "table_name": "orders",
 +        "partition_column": "dt_epoch",
 +        "partition_mapped_column": "event_time",
 +        "partition_filter_mapping": {
 +            "partition_column": "dt_epoch",
 +            "mapped_column": "event_time",
 +            "evaluated_transform": "unix_timestamp(:value)",
 +        },
 +    }
 +    with (
 +        patch.object(SqlaTable, "data_for_slices", return_value=payload),
 +        patch(
 +            "superset.dashboards.api.security_manager.can_access_datasource",
 +            return_value=can_access,
 +        ),
 +        patch(
 +            "superset.dashboards.schemas.security_manager.is_guest_user",
 +            return_value=False,
 +        ),
 +    ):
 +        serialized: dict[str, Any] = DashboardRestApi()._serialize_dashboard_dataset(
 +            *dashboard.datasets_trimmed_for_slices()[0]
 +        )
 +
 +    fields = ("partition_column", "partition_mapped_column", "partition_filter_mapping")
 +    if can_access:
 +        assert all(field in serialized for field in fields)
 +        assert (
 +            serialized["partition_filter_mapping"]["evaluated_transform"]
 +            == "unix_timestamp(:value)"
 +        )
 +    else:
 +        assert not any(field in serialized for field in fields)
 +
 +
 +def test_a_guest_token_dashboard_dataset_hides_its_partition_mapping() -> None:
 +    """
 +    Same reasoning as the inaccessible case, through the guest narrowing:
 +    `evaluated_transform` is a SQL expression, which is what puts `sql` in that
 +    list. Neither the dataset editor nor Explore's pruning indicator is a guest
 +    surface, so nothing is lost.
 +    """
 +    token: GuestToken = {
 +        "iat": 0,
 +        "exp": 1,
 +        "user": {"username": "embedded-guest"},
 +        "resources": [],
 +        "rls_rules": [],
 +    }
 +    guest: GuestUser = GuestUser(token, roles=[])
 +    with (
 +        patch.object(g, "user", guest, create=True),
 +        # `is_guest_user` is gated on EMBEDDED_SUPERSET, as the sibling guest
 +        # test above does it.
 +        patch("superset.is_feature_enabled", return_value=True),
 +    ):
 +        payload: dict[str, Any] = DashboardDatasetSchema().dump(
 +            {
 +                "id": 7,
 +                "uid": "7__table",
 +                "partition_column": "dt_epoch",
 +                "partition_mapped_column": "event_time",
 +                "partition_filter_mapping": {"evaluated_transform": "lower(:value)"},
 +            }
 +        )
 +
 +    assert "partition_column" not in payload
 +    assert "partition_mapped_column" not in payload
 +    assert "partition_filter_mapping" not in payload
 +
 +
 +def test_a_dataset_without_a_mapping_serializes_its_null_partition_fields() -> None:
 +    """
 +    `SqlaTable.data` includes all three unconditionally, and the first two are
 +    `None` on any dataset without a mapping. Declared non-nullable, the
 +    generated spec rejected that ordinary response under strict client
 +    validation.
 +    """
 +    payload: dict[str, Any] = DashboardDatasetSchema().dump(
 +        {
 +            "id": 7,
 +            "uid": "7__table",
 +            "partition_column": None,
 +            "partition_mapped_column": None,
 +            "partition_filter_mapping": None,
 +        }
 +    )
 +
 +    assert payload["partition_column"] is None
 +    assert payload["partition_mapped_column"] is None
 +    assert payload["partition_filter_mapping"] is None
diff --cc tests/unit_tests/views/datasource/views_test.py
index 72bbedcce1a,47b643a3fa3..9083b1f4a21
--- a/tests/unit_tests/views/datasource/views_test.py
+++ b/tests/unit_tests/views/datasource/views_test.py
@@@ -27,9 -27,11 +27,12 @@@ from unittest.mock import ANY, call, Ma
  import pytest
  from flask import Flask
  
- from superset.commands.dataset.exceptions import DatasetForbiddenError
+ from superset.commands.dataset.exceptions import (
+     DatasetForbiddenError,
+     DatasetSamplesFailedError,
+ )
  from superset.connectors.sqla.models import SqlaTable
 +from superset.connectors.sqla.partition_mapping import MAX_TRANSFORM_LENGTH
  from superset.errors import ErrorLevel, SupersetError, SupersetErrorType
  from superset.exceptions import SupersetSecurityException
  from superset.sql.parse import Table