You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@superset.apache.org by ru...@apache.org on 2026/06/05 17:33:27 UTC
(superset) branch master updated: feat(duration-format): replace pretty-ms with native Intl.DurationFormat for localized duration formatting (#39330)
This is an automated email from the ASF dual-hosted git repository.
rusackas pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/superset.git
The following commit(s) were added to refs/heads/master by this push:
new 108e40cbb61 feat(duration-format): replace pretty-ms with native Intl.DurationFormat for localized duration formatting (#39330)
108e40cbb61 is described below
commit 108e40cbb61af67d72c4836d568d23ecf4a461a7
Author: innovark <er...@mailfence.com>
AuthorDate: Fri Jun 5 20:33:17 2026 +0300
feat(duration-format): replace pretty-ms with native Intl.DurationFormat for localized duration formatting (#39330)
---
UPDATING.md | 6 +
superset-frontend/jest.config.js | 2 +-
superset-frontend/package-lock.json | 51 ++++++-
superset-frontend/package.json | 2 +-
.../src/utils/D3Formatting.ts | 2 +-
.../packages/superset-ui-core/package.json | 2 +-
.../superset-ui-core/src/number-format/README.md | 6 +-
.../factories/createDurationFormatter.ts | 47 ++++++-
.../getIntlDurationFormatter.ts} | 32 ++---
.../src/number-format/utils/parseMilliseconds.ts | 57 ++++++++
.../factories/createDurationFormatter.test.ts | 25 ++--
.../utils/getIntlDurationFormatter.test.ts | 38 ++++++
.../number-format/utils/parseMilliseconds.test.ts | 148 +++++++++++++++++++++
.../packages/superset-ui-core/types/intl.d.ts | 73 ++++++++++
superset-frontend/spec/helpers/setup.ts | 4 +
.../src/features/tasks/TaskStatusIcon.tsx | 4 +
.../src/features/tasks/timeUtils.test.ts | 6 +-
superset-frontend/src/features/tasks/timeUtils.ts | 72 ++++++++--
superset-frontend/src/pages/TaskList/index.tsx | 7 +-
superset-frontend/src/preamble.test.ts | 113 ++++++++++++++++
superset-frontend/src/preamble.ts | 3 +-
superset-frontend/src/setup/setupFormatters.ts | 15 ++-
superset/translations/ar/LC_MESSAGES/messages.po | 80 +++++++----
superset/translations/ca/LC_MESSAGES/messages.po | 86 +++++++-----
superset/translations/cs/LC_MESSAGES/messages.po | 86 +++++++-----
superset/translations/de/LC_MESSAGES/messages.po | 82 ++++++++----
superset/translations/en/LC_MESSAGES/messages.po | 72 ++++++----
superset/translations/es/LC_MESSAGES/messages.po | 88 +++++++-----
superset/translations/fa/LC_MESSAGES/messages.po | 82 ++++++++----
superset/translations/fi/LC_MESSAGES/messages.po | 99 +++++++++-----
superset/translations/fr/LC_MESSAGES/messages.po | 86 +++++++-----
superset/translations/it/LC_MESSAGES/messages.po | 74 +++++++----
superset/translations/ja/LC_MESSAGES/messages.po | 84 +++++++-----
superset/translations/ko/LC_MESSAGES/messages.po | 73 ++++++----
superset/translations/lv/LC_MESSAGES/messages.po | 84 +++++++-----
superset/translations/messages.pot | 66 +++++----
superset/translations/mi/LC_MESSAGES/messages.po | 84 +++++++-----
superset/translations/nl/LC_MESSAGES/messages.po | 80 +++++++----
superset/translations/pl/LC_MESSAGES/messages.po | 80 +++++++----
superset/translations/pt/LC_MESSAGES/messages.po | 74 +++++++----
.../translations/pt_BR/LC_MESSAGES/messages.po | 80 +++++++----
superset/translations/ru/LC_MESSAGES/messages.po | 92 ++++++++-----
superset/translations/sk/LC_MESSAGES/messages.po | 86 +++++++-----
superset/translations/sl/LC_MESSAGES/messages.po | 80 +++++++----
superset/translations/th/LC_MESSAGES/messages.po | 99 +++++++++-----
superset/translations/tr/LC_MESSAGES/messages.po | 76 +++++++----
superset/translations/uk/LC_MESSAGES/messages.po | 84 +++++++-----
superset/translations/zh/LC_MESSAGES/messages.po | 77 +++++++----
.../translations/zh_TW/LC_MESSAGES/messages.po | 77 +++++++----
49 files changed, 2052 insertions(+), 874 deletions(-)
diff --git a/UPDATING.md b/UPDATING.md
index ce90df733c2..9e04218886f 100644
--- a/UPDATING.md
+++ b/UPDATING.md
@@ -24,6 +24,12 @@ assists people when migrating to a new version.
## Next
+### Duration formatter precision
+
+The `DURATION` number formatter now uses `Intl.DurationFormat` for locale-aware output. By default, sub-second fields are omitted, so values that previously displayed fractional seconds with `pretty-ms`, such as `10500` milliseconds rendering as `10.5s`, now render as `10s`.
+
+To preserve sub-second precision in custom duration formatters, enable `formatSubMilliseconds`.
+
### YDB now uses a native sqlglot dialect
YDB SQL parsing now relies on the dedicated [`ydb-sqlglot-plugin`](https://pypi.org/project/ydb-sqlglot-plugin/) dialect, which registers itself with sqlglot automatically. YDB users must install this plugin (e.g., via `pip install "apache-superset[ydb]"`) to avoid a `ValueError` when Superset parses YDB queries.
diff --git a/superset-frontend/jest.config.js b/superset-frontend/jest.config.js
index d13cd1d03b0..e117ab3f0ee 100644
--- a/superset-frontend/jest.config.js
+++ b/superset-frontend/jest.config.js
@@ -69,7 +69,7 @@ module.exports = {
],
coverageReporters: ['lcov', 'json-summary', 'html', 'text'],
transformIgnorePatterns: [
- 'node_modules/(?!d3-(array|interpolate|color|time|scale|time-format|format)|internmap|@mapbox/tiny-sdf|remark-gfm|(?!@ngrx|(?!deck.gl)|d3-scale)|markdown-table|micromark-*.|decode-named-character-reference|character-entities|mdast-util-*.|unist-util-*.|ccount|escape-string-regexp|nanoid|uuid|@rjsf/*.|echarts|zrender|fetch-mock|pretty-ms|parse-ms|ol|@babel/runtime|@emotion|cheerio|cheerio/lib|parse5|dom-serializer|entities|htmlparser2|rehype-sanitize|hast-util-sanitize|unified|unist-. [...]
+ 'node_modules/(?!@formatjs/.*|d3-(array|interpolate|color|time|scale|time-format|format)|internmap|@mapbox/tiny-sdf|remark-gfm|(?!@ngrx|(?!deck.gl)|d3-scale)|markdown-table|micromark-*.|decode-named-character-reference|character-entities|mdast-util-*.|unist-util-*.|ccount|escape-string-regexp|nanoid|uuid|@rjsf/*.|echarts|zrender|fetch-mock|pretty-ms|parse-ms|ol|@babel/runtime|@emotion|cheerio|cheerio/lib|parse5|dom-serializer|entities|htmlparser2|rehype-sanitize|hast-util-sanitize|un [...]
],
preset: 'ts-jest',
transform: {
diff --git a/superset-frontend/package-lock.json b/superset-frontend/package-lock.json
index 824f1d4c72b..5212dd1e395 100644
--- a/superset-frontend/package-lock.json
+++ b/superset-frontend/package-lock.json
@@ -118,7 +118,6 @@
"mustache": "^4.2.0",
"nanoid": "^5.1.11",
"ol": "^10.9.0",
- "pretty-ms": "^9.3.0",
"query-string": "9.4.0",
"re-resizable": "^6.11.2",
"react": "^18.2.0",
@@ -179,6 +178,7 @@
"@babel/types": "^7.29.7",
"@emotion/babel-plugin": "^11.13.5",
"@emotion/jest": "^11.14.2",
+ "@formatjs/intl-durationformat": "^0.10.3",
"@istanbuljs/nyc-config-typescript": "^1.0.1",
"@mihkeleidast/storybook-addon-source": "^1.0.1",
"@playwright/test": "^1.60.0",
@@ -3954,6 +3954,53 @@
"url": "https://github.com/sponsors/ayuhito"
}
},
+ "node_modules/@formatjs/bigdecimal": {
+ "version": "0.2.0",
+ "resolved": "https://registry.npmjs.org/@formatjs/bigdecimal/-/bigdecimal-0.2.0.tgz",
+ "integrity": "sha512-GeaxHZbUoYvHL9tC5eltHLs+1zU70aPw0s7LwqgktIzF5oMhNY4o4deEtusJMsq7WFJF3Ye2zQEzdG8beVk73w==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@formatjs/ecma402-abstract": {
+ "version": "3.2.0",
+ "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-3.2.0.tgz",
+ "integrity": "sha512-dHnqHgBo6GXYGRsepaE1wmsC2etaivOWd5VaJstZd+HI2zR3DCUjbDVZRtoPGkkXZmyHvBwrdEUuqfvzhF/DtQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@formatjs/bigdecimal": "0.2.0",
+ "@formatjs/fast-memoize": "3.1.1",
+ "@formatjs/intl-localematcher": "0.8.2"
+ }
+ },
+ "node_modules/@formatjs/fast-memoize": {
+ "version": "3.1.1",
+ "resolved": "https://registry.npmjs.org/@formatjs/fast-memoize/-/fast-memoize-3.1.1.tgz",
+ "integrity": "sha512-CbNbf+tlJn1baRnPkNePnBqTLxGliG6DDgNa/UtV66abwIjwsliPMOt0172tzxABYzSuxZBZfcp//qI8AvBWPg==",
+ "dev": true,
+ "license": "MIT"
+ },
+ "node_modules/@formatjs/intl-durationformat": {
+ "version": "0.10.3",
+ "resolved": "https://registry.npmjs.org/@formatjs/intl-durationformat/-/intl-durationformat-0.10.3.tgz",
+ "integrity": "sha512-xRS3GaOlsQLwz0n56SvaddwEnl2NLPKBvYg2M32ak/27dodmVxFJz3j7Nqj7EwKyHTu3f/e+BeoKPrIDUSXTuQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@formatjs/ecma402-abstract": "3.2.0",
+ "@formatjs/intl-localematcher": "0.8.2"
+ }
+ },
+ "node_modules/@formatjs/intl-localematcher": {
+ "version": "0.8.2",
+ "resolved": "https://registry.npmjs.org/@formatjs/intl-localematcher/-/intl-localematcher-0.8.2.tgz",
+ "integrity": "sha512-q05KMYGJLyqFNFtIb8NhWLF5X3aK/k0wYt7dnRFuy6aLQL+vUwQ1cg5cO4qawEiINybeCPXAWlprY2mSBjSXAQ==",
+ "dev": true,
+ "license": "MIT",
+ "dependencies": {
+ "@formatjs/fast-memoize": "3.1.1"
+ }
+ },
"node_modules/@gar/promise-retry": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/@gar/promise-retry/-/promise-retry-1.0.3.tgz",
@@ -49323,7 +49370,7 @@
"jed": "^1.1.1",
"lodash": "^4.18.1",
"math-expression-evaluator": "^2.0.7",
- "pretty-ms": "^9.3.0",
+ "parse-ms": "^4.0.0",
"re-resizable": "^6.11.2",
"react-ace": "^14.0.1",
"react-draggable": "^4.5.0",
diff --git a/superset-frontend/package.json b/superset-frontend/package.json
index acd8cc38d35..9bfafbf4d3c 100644
--- a/superset-frontend/package.json
+++ b/superset-frontend/package.json
@@ -201,7 +201,6 @@
"mustache": "^4.2.0",
"nanoid": "^5.1.11",
"ol": "^10.9.0",
- "pretty-ms": "^9.3.0",
"query-string": "9.4.0",
"re-resizable": "^6.11.2",
"react": "^18.2.0",
@@ -262,6 +261,7 @@
"@babel/types": "^7.29.7",
"@emotion/babel-plugin": "^11.13.5",
"@emotion/jest": "^11.14.2",
+ "@formatjs/intl-durationformat": "^0.10.3",
"@istanbuljs/nyc-config-typescript": "^1.0.1",
"@mihkeleidast/storybook-addon-source": "^1.0.1",
"@playwright/test": "^1.60.0",
diff --git a/superset-frontend/packages/superset-ui-chart-controls/src/utils/D3Formatting.ts b/superset-frontend/packages/superset-ui-chart-controls/src/utils/D3Formatting.ts
index 5a331448b28..b276a54f299 100644
--- a/superset-frontend/packages/superset-ui-chart-controls/src/utils/D3Formatting.ts
+++ b/superset-frontend/packages/superset-ui-chart-controls/src/utils/D3Formatting.ts
@@ -57,7 +57,7 @@ export const D3_FORMAT_OPTIONS: [string, string][] = [
...d3Formatted,
['DURATION', t('Duration in ms (66000 => 1m 6s)')],
['DURATION_SUB', t('Duration in ms (1.40008 => 1ms 400µs 80ns)')],
- ['DURATION_COL', t('Duration in ms (10500 => 0:10.5)')],
+ ['DURATION_COL', t('Duration in ms (10500 => 0:00:10.5)')],
['MEMORY_DECIMAL', t('Memory in bytes - decimal (1024B => 1.024kB)')],
['MEMORY_BINARY', t('Memory in bytes - binary (1024B => 1KiB)')],
[
diff --git a/superset-frontend/packages/superset-ui-core/package.json b/superset-frontend/packages/superset-ui-core/package.json
index c9d0d26e48f..d58c0ce41e2 100644
--- a/superset-frontend/packages/superset-ui-core/package.json
+++ b/superset-frontend/packages/superset-ui-core/package.json
@@ -49,7 +49,7 @@
"jed": "^1.1.1",
"lodash": "^4.18.1",
"math-expression-evaluator": "^2.0.7",
- "pretty-ms": "^9.3.0",
+ "parse-ms": "^4.0.0",
"re-resizable": "^6.11.2",
"react-ace": "^14.0.1",
"react-draggable": "^4.5.0",
diff --git a/superset-frontend/packages/superset-ui-core/src/number-format/README.md b/superset-frontend/packages/superset-ui-core/src/number-format/README.md
index 49ba401c3d9..3999c76ae37 100644
--- a/superset-frontend/packages/superset-ui-core/src/number-format/README.md
+++ b/superset-frontend/packages/superset-ui-core/src/number-format/README.md
@@ -64,15 +64,15 @@ NumberFormats.PERCENT; // ,.2%
NumberFormats.PERCENT_3_POINT; // ,.3%
```
-There is also a formatter based on [pretty-ms](https://www.npmjs.com/package/pretty-ms) that can be
+There is also a formatter based on [Intl.DurationFormat](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DurationFormat) that can be
used to format time durations:
```js
import { createDurationFormatter, formatNumber, getNumberFormatterRegistry } from '@superset-ui-number-format';
-getNumberFormatterRegistry().registerValue('my_duration_format', createDurationFormatter({ colonNotation: true });
+getNumberFormatterRegistry().registerValue('my_duration_format', createDurationFormatter({ style: 'digital' }));
console.log(formatNumber('my_duration_format', 95500))
-// prints '1:35.5'
+// prints '0:01:35'
```
#### API
diff --git a/superset-frontend/packages/superset-ui-core/src/number-format/factories/createDurationFormatter.ts b/superset-frontend/packages/superset-ui-core/src/number-format/factories/createDurationFormatter.ts
index 958136d90c2..8ba197bd652 100644
--- a/superset-frontend/packages/superset-ui-core/src/number-format/factories/createDurationFormatter.ts
+++ b/superset-frontend/packages/superset-ui-core/src/number-format/factories/createDurationFormatter.ts
@@ -17,8 +17,9 @@
* under the License.
*/
-import prettyMilliseconds, { Options } from 'pretty-ms';
import NumberFormatter from '../NumberFormatter';
+import { getIntlDurationFormatter } from '../utils/getIntlDurationFormatter';
+import { parseMilliseconds } from '../utils/parseMilliseconds';
export default function createDurationFormatter(
config: {
@@ -26,14 +27,48 @@ export default function createDurationFormatter(
id?: string;
label?: string;
multiplier?: number;
- } & Options = {},
+ locale?: string;
+ formatSubMilliseconds?: boolean;
+ } & Intl.DurationFormatOptions = {},
) {
- const { description, id, label, multiplier = 1, ...prettyMsOptions } = config;
-
+ const {
+ description,
+ id,
+ label,
+ multiplier = 1,
+ locale,
+ formatSubMilliseconds = false,
+ ...intlOptions
+ } = config;
+ const durationFormatter = getIntlDurationFormatter(locale, {
+ secondsDisplay: 'auto',
+ style: 'narrow',
+ ...intlOptions,
+ });
+ const zeroDurationFormatter = getIntlDurationFormatter(locale, {
+ secondsDisplay: 'always',
+ style: 'narrow',
+ ...intlOptions,
+ });
return new NumberFormatter({
description,
- formatFunc: value =>
- prettyMilliseconds(value * multiplier, prettyMsOptions),
+ formatFunc: value => {
+ const durObject = parseMilliseconds(value * multiplier);
+
+ if (!formatSubMilliseconds) {
+ durObject.milliseconds = 0;
+ durObject.microseconds = 0;
+ durObject.nanoseconds = 0;
+ }
+
+ const isAllUnitsZero = Object.values(durObject).every(
+ value => value === 0,
+ );
+
+ return (
+ isAllUnitsZero ? zeroDurationFormatter : durationFormatter
+ ).format(durObject);
+ },
id: id ?? 'duration_format',
label: label ?? `Duration formatter`,
});
diff --git a/superset-frontend/packages/superset-ui-core/src/number-format/factories/createDurationFormatter.ts b/superset-frontend/packages/superset-ui-core/src/number-format/utils/getIntlDurationFormatter.ts
similarity index 58%
copy from superset-frontend/packages/superset-ui-core/src/number-format/factories/createDurationFormatter.ts
copy to superset-frontend/packages/superset-ui-core/src/number-format/utils/getIntlDurationFormatter.ts
index 958136d90c2..23644e0df02 100644
--- a/superset-frontend/packages/superset-ui-core/src/number-format/factories/createDurationFormatter.ts
+++ b/superset-frontend/packages/superset-ui-core/src/number-format/utils/getIntlDurationFormatter.ts
@@ -1,4 +1,4 @@
-/*
+/**
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
@@ -17,24 +17,14 @@
* under the License.
*/
-import prettyMilliseconds, { Options } from 'pretty-ms';
-import NumberFormatter from '../NumberFormatter';
-
-export default function createDurationFormatter(
- config: {
- description?: string;
- id?: string;
- label?: string;
- multiplier?: number;
- } & Options = {},
-) {
- const { description, id, label, multiplier = 1, ...prettyMsOptions } = config;
-
- return new NumberFormatter({
- description,
- formatFunc: value =>
- prettyMilliseconds(value * multiplier, prettyMsOptions),
- id: id ?? 'duration_format',
- label: label ?? `Duration formatter`,
- });
+export function getIntlDurationFormatter(
+ locale?: string,
+ options?: Intl.DurationFormatOptions,
+): Intl.DurationFormat {
+ const normalizedLocale = locale?.replace(/_/g, '-');
+ try {
+ return new Intl.DurationFormat(normalizedLocale, options);
+ } catch {
+ return new Intl.DurationFormat('en', options);
+ }
}
diff --git a/superset-frontend/packages/superset-ui-core/src/number-format/utils/parseMilliseconds.ts b/superset-frontend/packages/superset-ui-core/src/number-format/utils/parseMilliseconds.ts
new file mode 100644
index 00000000000..67f654c6b0d
--- /dev/null
+++ b/superset-frontend/packages/superset-ui-core/src/number-format/utils/parseMilliseconds.ts
@@ -0,0 +1,57 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import parseMs from 'parse-ms';
+
+interface Duration {
+ years: number;
+ days: number;
+ hours: number;
+ minutes: number;
+ seconds: number;
+ milliseconds: number;
+ microseconds: number;
+ nanoseconds: number;
+}
+
+const DAYS_IN_YEAR = 365;
+
+/**
+ * Parses milliseconds into a duration object.
+
+ * @param ms - The number of milliseconds to parse
+ * @returns A duration object containing years, days, hours, minutes, seconds,
+ * milliseconds, microseconds, and nanoseconds (1 year = 365 days)
+ * @example
+ * // Parse a complex duration
+ * parseMilliseconds(90061000);
+ * // { years: 0, days: 1, hours: 1, minutes: 1, seconds: 1, milliseconds: 0, ... }
+ */
+export function parseMilliseconds(ms: number): Duration {
+ const parsed = parseMs(ms);
+ const totalDays = parsed.days;
+ const years = Math.trunc(totalDays / DAYS_IN_YEAR);
+ const remainingDays = totalDays % DAYS_IN_YEAR;
+
+ return {
+ ...parsed,
+ years,
+ days: remainingDays,
+ };
+}
diff --git a/superset-frontend/packages/superset-ui-core/test/number-format/factories/createDurationFormatter.test.ts b/superset-frontend/packages/superset-ui-core/test/number-format/factories/createDurationFormatter.test.ts
index 0e7c6fff7f6..964f92834ed 100644
--- a/superset-frontend/packages/superset-ui-core/test/number-format/factories/createDurationFormatter.test.ts
+++ b/superset-frontend/packages/superset-ui-core/test/number-format/factories/createDurationFormatter.test.ts
@@ -26,34 +26,31 @@ test('creates an instance of NumberFormatter', () => {
test('format milliseconds in human readable format with default options', () => {
const formatter = createDurationFormatter();
expect(formatter(-1000)).toBe('-1s');
- expect(formatter(0)).toBe('0ms');
+ expect(formatter(0)).toBe('0s');
expect(formatter(1000)).toBe('1s');
- expect(formatter(1337)).toBe('1.3s');
- expect(formatter(10500)).toBe('10.5s');
+ expect(formatter(1337)).toBe('1s');
+ expect(formatter(10500)).toBe('10s');
expect(formatter(60 * 1000)).toBe('1m');
expect(formatter(90 * 1000)).toBe('1m 30s');
});
test('format seconds in human readable format with default options', () => {
const formatter = createDurationFormatter({ multiplier: 1000 });
- expect(formatter(-0.5)).toBe('-500ms');
- expect(formatter(0.5)).toBe('500ms');
+ expect(formatter(-0.5)).toBe('-0s');
+ expect(formatter(0.5)).toBe('0s');
expect(formatter(1)).toBe('1s');
expect(formatter(30)).toBe('30s');
expect(formatter(60)).toBe('1m');
expect(formatter(90)).toBe('1m 30s');
});
-test('format milliseconds in human readable format with additional pretty-ms options', () => {
+test('format milliseconds in human readable format with additional options', () => {
const colonNotationFormatter = createDurationFormatter({
- colonNotation: true,
- });
- expect(colonNotationFormatter(-10500)).toBe('-0:10.5');
- expect(colonNotationFormatter(10500)).toBe('0:10.5');
- const zeroDecimalFormatter = createDurationFormatter({
- secondsDecimalDigits: 0,
+ style: 'digital',
+ formatSubMilliseconds: true,
+ fractionalDigits: 1,
});
- expect(zeroDecimalFormatter(10500)).toBe('10s');
+ expect(colonNotationFormatter(10500)).toBe('0:00:10.5');
const subMillisecondFormatter = createDurationFormatter({
formatSubMilliseconds: true,
});
- expect(subMillisecondFormatter(100.40008)).toBe('100ms 400µs 80ns');
+ expect(subMillisecondFormatter(100.40008)).toBe('100ms 400μs 80ns');
});
diff --git a/superset-frontend/packages/superset-ui-core/test/number-format/utils/getIntlDurationFormatter.test.ts b/superset-frontend/packages/superset-ui-core/test/number-format/utils/getIntlDurationFormatter.test.ts
new file mode 100644
index 00000000000..1aa053beb20
--- /dev/null
+++ b/superset-frontend/packages/superset-ui-core/test/number-format/utils/getIntlDurationFormatter.test.ts
@@ -0,0 +1,38 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import { getIntlDurationFormatter } from '@superset-ui/core/number-format/utils/getIntlDurationFormatter';
+
+test('getIntlDurationFormatter creates formatter with fallback locale when passed locale is invalid', () => {
+ const formatter = getIntlDurationFormatter('invalid-locale-xyz');
+ expect(formatter).toBeInstanceOf(Intl.DurationFormat);
+ expect(formatter.format({ seconds: 60 })).toBe('60 sec');
+});
+
+test('getIntlDurationFormatter creates formatter with custom options', () => {
+ const formatter = getIntlDurationFormatter('en', { style: 'digital' });
+ expect(formatter).toBeInstanceOf(Intl.DurationFormat);
+ expect(formatter.format({ minutes: 5, seconds: 30 })).toContain(':');
+});
+
+test('getIntlDurationFormatter normalizes locale underscores', () => {
+ const formatter = getIntlDurationFormatter('zh_Hans_CN');
+ expect(formatter).toBeInstanceOf(Intl.DurationFormat);
+ expect(formatter.resolvedOptions().locale).toMatch(/^zh/);
+});
diff --git a/superset-frontend/packages/superset-ui-core/test/number-format/utils/parseMilliseconds.test.ts b/superset-frontend/packages/superset-ui-core/test/number-format/utils/parseMilliseconds.test.ts
new file mode 100644
index 00000000000..6e70ef39621
--- /dev/null
+++ b/superset-frontend/packages/superset-ui-core/test/number-format/utils/parseMilliseconds.test.ts
@@ -0,0 +1,148 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import { parseMilliseconds } from '@superset-ui/core/number-format/utils/parseMilliseconds';
+
+test('parseMilliseconds should parse basic time units correctly', () => {
+ expect(parseMilliseconds(500)).toEqual({
+ years: 0,
+ days: 0,
+ hours: 0,
+ minutes: 0,
+ seconds: 0,
+ milliseconds: 500,
+ microseconds: 0,
+ nanoseconds: 0,
+ });
+ expect(parseMilliseconds(5000)).toEqual({
+ years: 0,
+ days: 0,
+ hours: 0,
+ minutes: 0,
+ seconds: 5,
+ milliseconds: 0,
+ microseconds: 0,
+ nanoseconds: 0,
+ });
+ expect(parseMilliseconds(120000)).toEqual({
+ years: 0,
+ days: 0,
+ hours: 0,
+ minutes: 2,
+ seconds: 0,
+ milliseconds: 0,
+ microseconds: 0,
+ nanoseconds: 0,
+ });
+ expect(parseMilliseconds(7200000)).toEqual({
+ years: 0,
+ days: 0,
+ hours: 2,
+ minutes: 0,
+ seconds: 0,
+ milliseconds: 0,
+ microseconds: 0,
+ nanoseconds: 0,
+ });
+ expect(parseMilliseconds(172800000)).toEqual({
+ years: 0,
+ days: 2,
+ hours: 0,
+ minutes: 0,
+ seconds: 0,
+ milliseconds: 0,
+ microseconds: 0,
+ nanoseconds: 0,
+ });
+ expect(parseMilliseconds(31536000000)).toEqual({
+ years: 1,
+ days: 0,
+ hours: 0,
+ minutes: 0,
+ seconds: 0,
+ milliseconds: 0,
+ microseconds: 0,
+ nanoseconds: 0,
+ });
+});
+
+test('parseMilliseconds should handle complex duration', () => {
+ expect(parseMilliseconds(90061234)).toEqual({
+ years: 0,
+ days: 1,
+ hours: 1,
+ minutes: 1,
+ seconds: 1,
+ milliseconds: 234,
+ microseconds: 0,
+ nanoseconds: 0,
+ });
+});
+
+test('parseMilliseconds should handle fractional milliseconds', () => {
+ expect(parseMilliseconds(1.001001)).toEqual({
+ years: 0,
+ days: 0,
+ hours: 0,
+ minutes: 0,
+ seconds: 0,
+ milliseconds: 1,
+ microseconds: 1,
+ nanoseconds: 1,
+ });
+});
+
+test('parseMilliseconds should handle zero', () => {
+ expect(parseMilliseconds(0)).toEqual({
+ years: 0,
+ days: 0,
+ hours: 0,
+ minutes: 0,
+ seconds: 0,
+ milliseconds: 0,
+ microseconds: 0,
+ nanoseconds: 0,
+ });
+});
+
+test('parseMilliseconds should handle negative duration', () => {
+ expect(parseMilliseconds(-1000)).toEqual({
+ years: -0,
+ days: -0,
+ hours: -0,
+ minutes: -0,
+ seconds: -1,
+ milliseconds: -0,
+ microseconds: -0,
+ nanoseconds: -0,
+ });
+});
+
+test('parseMilliseconds should handle negative days without overflowing into years', () => {
+ expect(parseMilliseconds(-31449600000)).toEqual({
+ years: -0,
+ days: -364,
+ hours: -0,
+ minutes: -0,
+ seconds: -0,
+ milliseconds: -0,
+ microseconds: -0,
+ nanoseconds: -0,
+ });
+});
diff --git a/superset-frontend/packages/superset-ui-core/types/intl.d.ts b/superset-frontend/packages/superset-ui-core/types/intl.d.ts
new file mode 100644
index 00000000000..6c85991c57f
--- /dev/null
+++ b/superset-frontend/packages/superset-ui-core/types/intl.d.ts
@@ -0,0 +1,73 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+declare namespace Intl {
+ class DurationFormat {
+ constructor(locale?: string | string[], options?: DurationFormatOptions);
+ format(duration: DurationObject): string;
+ formatToParts(
+ duration: DurationObject,
+ ): { type: string; value: string; unit?: string }[];
+ resolvedOptions(): ResolvedDurationFormatOptions;
+ }
+
+ interface DurationObject {
+ years?: number;
+ months?: number;
+ weeks?: number;
+ days?: number;
+ hours?: number;
+ minutes?: number;
+ seconds?: number;
+ milliseconds?: number;
+ microseconds?: number;
+ nanoseconds?: number;
+ }
+
+ interface DurationFormatOptions {
+ localeMatcher?: 'lookup' | 'best fit';
+ numberingSystem?: string;
+ style?: 'long' | 'short' | 'narrow' | 'digital';
+ years?: 'long' | 'short' | 'narrow';
+ yearsDisplay?: 'always' | 'auto';
+ months?: 'long' | 'short' | 'narrow';
+ monthsDisplay?: 'always' | 'auto';
+ weeks?: 'long' | 'short' | 'narrow';
+ weeksDisplay?: 'always' | 'auto';
+ days?: 'long' | 'short' | 'narrow';
+ daysDisplay?: 'always' | 'auto';
+ hours?: 'long' | 'short' | 'narrow' | 'numeric' | '2-digit';
+ hoursDisplay?: 'always' | 'auto';
+ minutes?: 'long' | 'short' | 'narrow' | 'numeric' | '2-digit';
+ minutesDisplay?: 'always' | 'auto';
+ seconds?: 'long' | 'short' | 'narrow' | 'numeric' | '2-digit';
+ secondsDisplay?: 'always' | 'auto';
+ milliseconds?: 'long' | 'short' | 'narrow' | 'numeric';
+ millisecondsDisplay?: 'always' | 'auto';
+ microseconds?: 'long' | 'short' | 'narrow' | 'numeric';
+ microsecondsDisplay?: 'always' | 'auto';
+ nanoseconds?: 'long' | 'short' | 'narrow' | 'numeric';
+ nanosecondsDisplay?: 'always' | 'auto';
+ fractionalDigits?: number;
+ }
+
+ interface ResolvedDurationFormatOptions extends DurationFormatOptions {
+ locale: string;
+ }
+}
diff --git a/superset-frontend/spec/helpers/setup.ts b/superset-frontend/spec/helpers/setup.ts
index 9ec6d6661fe..3d216e00af1 100644
--- a/superset-frontend/spec/helpers/setup.ts
+++ b/superset-frontend/spec/helpers/setup.ts
@@ -23,6 +23,10 @@ import React from 'react';
import { configure as configureTestingLibrary } from '@testing-library/react';
import { matchers } from '@emotion/jest';
+if (typeof Intl.DurationFormat === 'undefined') {
+ require('@formatjs/intl-durationformat/polyfill.js');
+}
+
configureTestingLibrary({
testIdAttribute: 'data-test',
});
diff --git a/superset-frontend/src/features/tasks/TaskStatusIcon.tsx b/superset-frontend/src/features/tasks/TaskStatusIcon.tsx
index abb2bd99d28..702d82a0f34 100644
--- a/superset-frontend/src/features/tasks/TaskStatusIcon.tsx
+++ b/superset-frontend/src/features/tasks/TaskStatusIcon.tsx
@@ -18,10 +18,12 @@
*/
import React from 'react';
+import { useSelector } from 'react-redux';
import { useTheme, SupersetTheme } from '@apache-superset/core/theme';
import { t } from '@apache-superset/core/translation';
import { Icons } from '@superset-ui/core/components/Icons';
import { Tooltip } from '@superset-ui/core/components';
+import type { RootState } from 'src/views/store';
import { TaskStatus } from './types';
import { formatProgressTooltip } from './timeUtils';
@@ -86,6 +88,7 @@ export default function TaskStatusIcon({
exceptionType,
}: TaskStatusIconProps) {
const theme = useTheme();
+ const locale = useSelector((state: RootState) => state.common?.locale);
const IconComponent = statusIcons[status];
const label = statusLabels[status];
@@ -99,6 +102,7 @@ export default function TaskStatusIcon({
progressTotal,
progressPercent,
durationSeconds,
+ locale,
);
tooltipContent = (
<>
diff --git a/superset-frontend/src/features/tasks/timeUtils.test.ts b/superset-frontend/src/features/tasks/timeUtils.test.ts
index 3a286a4140b..0514b426852 100644
--- a/superset-frontend/src/features/tasks/timeUtils.test.ts
+++ b/superset-frontend/src/features/tasks/timeUtils.test.ts
@@ -31,7 +31,7 @@ test('formatDuration returns null for invalid inputs', () => {
});
test('formatDuration formats seconds correctly', () => {
- expect(formatDuration(37.5)).toBe('37s');
+ expect(formatDuration(37.5)).toBe('37s 500ms');
expect(formatDuration(1)).toBe('1s');
expect(formatDuration(30)).toBe('30s');
});
@@ -48,6 +48,10 @@ test('formatDuration formats hours correctly', () => {
expect(formatDuration(7200)).toBe('2h');
});
+test('formatDuration limits output to two units', () => {
+ expect(formatDuration(93784)).toBe('1d 2h');
+});
+
test('calculateEta returns null for invalid inputs', () => {
expect(calculateEta(null, 60)).toBeNull();
expect(calculateEta(undefined, 60)).toBeNull();
diff --git a/superset-frontend/src/features/tasks/timeUtils.ts b/superset-frontend/src/features/tasks/timeUtils.ts
index 4a52f6f4814..bf4e2e13e85 100644
--- a/superset-frontend/src/features/tasks/timeUtils.ts
+++ b/superset-frontend/src/features/tasks/timeUtils.ts
@@ -17,32 +17,75 @@
* under the License.
*/
-import prettyMs from 'pretty-ms';
+import { parseMilliseconds } from '@superset-ui/core/number-format/utils/parseMilliseconds';
/**
* Maximum ETA to display (24 hours in seconds).
* ETAs beyond this are not shown as they're unreliable.
*/
const MAX_ETA_SECONDS = 86400;
+const durationFormatters = new Map<string, Intl.DurationFormat>();
+
+function createDurationFormatter(locale: string): Intl.DurationFormat {
+ const normalizedLocale = locale.replace(/_/g, '-');
+
+ try {
+ return new Intl.DurationFormat(normalizedLocale, { style: 'narrow' });
+ } catch {
+ return new Intl.DurationFormat('en', { style: 'narrow' });
+ }
+}
+
+function getCachedDurationFormatter(locale?: string): Intl.DurationFormat {
+ const key = locale ?? '';
+ const formatter = durationFormatters.get(key);
+
+ if (formatter) {
+ return formatter;
+ }
+
+ const newFormatter = createDurationFormatter(locale ?? 'en');
+ durationFormatters.set(key, newFormatter);
+ return newFormatter;
+}
/**
* Format a duration in seconds to a human-readable string.
*
* @param seconds - Duration in seconds
+ * @param locale - Current locale
* @returns Formatted string like "1m 30s" or "2h 15m", or null if invalid
*/
export function formatDuration(
seconds: number | null | undefined,
+ locale = 'en',
): string | null {
if (seconds === null || seconds === undefined || seconds <= 0) {
return null;
}
- return prettyMs(seconds * 1000, {
- unitCount: 2,
- secondsDecimalDigits: 0,
- keepDecimalsOnWholeSeconds: false,
- });
+ const durObject = parseMilliseconds(seconds * 1000);
+ const unitOrder = [
+ 'years',
+ 'days',
+ 'hours',
+ 'minutes',
+ 'seconds',
+ 'milliseconds',
+ 'microseconds',
+ 'nanoseconds',
+ ] as const;
+ const nonZeroUnits = unitOrder
+ .filter(unit => durObject[unit] > 0)
+ .slice(0, 2)
+ .reduce(
+ (obj, unit) => {
+ obj[unit] = durObject[unit];
+ return obj;
+ },
+ {} as Record<string, number>,
+ );
+ return getCachedDurationFormatter(locale).format(nonZeroUnits);
}
/**
@@ -53,11 +96,13 @@ export function formatDuration(
*
* @param progressPercent - Progress as a fraction (0.0 to 1.0)
* @param durationSeconds - Time elapsed so far in seconds
+ * @param locale - Current locale
* @returns Formatted ETA string or null if cannot be calculated
*/
export function calculateEta(
progressPercent: number | null | undefined,
durationSeconds: number | null | undefined,
+ locale?: string,
): string | null {
// Need both progress and duration to calculate ETA
if (
@@ -76,19 +121,16 @@ export function calculateEta(
// ETA = (elapsed / progress) * (1 - progress)
const estimatedTotalTime = durationSeconds / progressPercent;
- const remainingSeconds = estimatedTotalTime * (1 - progressPercent);
+ const remainingSeconds = Math.round(
+ estimatedTotalTime * (1 - progressPercent),
+ );
// Only show ETA if it's reasonable (less than 24 hours)
if (remainingSeconds <= 0 || remainingSeconds > MAX_ETA_SECONDS) {
return null;
}
- // Use unitCount: 2 to show up to 2 units (e.g., "1m 30s" instead of just "1m")
- // Use secondsDecimalDigits: 0 to show whole seconds (e.g., "52s" instead of "52.4s")
- return prettyMs(remainingSeconds * 1000, {
- unitCount: 2,
- secondsDecimalDigits: 0,
- });
+ return formatDuration(remainingSeconds, locale);
}
/**
@@ -105,6 +147,7 @@ export function calculateEta(
* @param progressTotal - Total count of items to process
* @param progressPercent - Progress as a fraction (0.0 to 1.0)
* @param durationSeconds - Time elapsed so far in seconds (used for ETA calculation)
+ * @param locale - Current locale
* @returns Array of lines for tooltip display
*/
export function formatProgressTooltip(
@@ -113,6 +156,7 @@ export function formatProgressTooltip(
progressTotal?: number | null,
progressPercent?: number | null,
durationSeconds?: number | null,
+ locale?: string,
): string[] {
const lines: string[] = [];
let progressPart = '';
@@ -142,7 +186,7 @@ export function formatProgressTooltip(
}
// Add ETA on a separate line if available
- const eta = calculateEta(progressPercent, durationSeconds);
+ const eta = calculateEta(progressPercent, durationSeconds, locale);
if (eta) {
lines.push(`ETA: ${eta}`);
}
diff --git a/superset-frontend/src/pages/TaskList/index.tsx b/superset-frontend/src/pages/TaskList/index.tsx
index 205dc0e3f8d..ad6f05e5c2f 100644
--- a/superset-frontend/src/pages/TaskList/index.tsx
+++ b/superset-frontend/src/pages/TaskList/index.tsx
@@ -25,6 +25,7 @@ import {
import { useTheme } from '@apache-superset/core/theme';
import { t } from '@apache-superset/core/translation';
import { useMemo, useCallback, useState } from 'react';
+import { useSelector } from 'react-redux';
import { Tooltip, Label, Modal, Checkbox } from '@superset-ui/core/components';
import {
CreatedInfo,
@@ -52,6 +53,7 @@ import {
} from 'src/features/tasks/types';
import { isUserAdmin } from 'src/dashboard/util/permissionUtils';
import getBootstrapData from 'src/utils/getBootstrapData';
+import type { RootState } from 'src/views/store';
const PAGE_SIZE = 25;
@@ -77,6 +79,7 @@ interface TaskListProps {
function TaskList({ addDangerToast, addSuccessToast, user }: TaskListProps) {
const theme = useTheme();
+ const locale = useSelector((state: RootState) => state.common?.locale);
// Check if GTF feature flag is enabled
if (!isFeatureEnabled(FeatureFlag.GlobalTaskFramework)) {
@@ -380,7 +383,7 @@ function TaskList({ addDangerToast, addSuccessToast, user }: TaskListProps) {
row: {
original: { duration_seconds },
},
- }: TaskCellProps) => formatDuration(duration_seconds) ?? '-',
+ }: TaskCellProps) => formatDuration(duration_seconds, locale) ?? '-',
accessor: 'duration_seconds',
Header: t('Duration'),
size: 'sm',
@@ -530,7 +533,7 @@ function TaskList({ addDangerToast, addSuccessToast, user }: TaskListProps) {
disableSortBy: true,
},
],
- [user.userId, theme, openCancelModal],
+ [user.userId, theme, locale, openCancelModal],
);
const filters: ListViewFilters = useMemo(
diff --git a/superset-frontend/src/preamble.test.ts b/superset-frontend/src/preamble.test.ts
new file mode 100644
index 00000000000..579b0c97f71
--- /dev/null
+++ b/superset-frontend/src/preamble.test.ts
@@ -0,0 +1,113 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+const mockConfigure = jest.fn();
+const mockInitFeatureFlags = jest.fn();
+const mockMakeApi = jest.fn(() => jest.fn());
+const mockSetupClient = jest.fn();
+const mockSetupColors = jest.fn();
+const mockSetupDashboardComponents = jest.fn();
+const mockSetupFormatters = jest.fn();
+const mockGetBootstrapData = jest.fn();
+const mockApplicationRoot = jest.fn(() => '/');
+const mockMakeUrl = jest.fn((url: string) => url);
+const mockDayjsLocale = jest.fn();
+
+jest.mock('@apache-superset/core/translation', () => ({
+ configure: mockConfigure,
+}));
+jest.mock('@apache-superset/core/utils', () => ({
+ logging: {
+ warn: jest.fn(),
+ },
+}));
+jest.mock('@superset-ui/core', () => ({
+ initFeatureFlags: mockInitFeatureFlags,
+ makeApi: mockMakeApi,
+}));
+jest.mock('@superset-ui/core/utils/dates', () => ({
+ extendedDayjs: {
+ locale: mockDayjsLocale,
+ },
+}));
+jest.mock('./setup/setupClient', () => ({
+ __esModule: true,
+ default: mockSetupClient,
+}));
+jest.mock('./setup/setupColors', () => ({
+ __esModule: true,
+ default: mockSetupColors,
+}));
+jest.mock('./setup/setupDashboardComponents', () => ({
+ __esModule: true,
+ default: mockSetupDashboardComponents,
+}));
+jest.mock('./setup/setupFormatters', () => ({
+ __esModule: true,
+ default: mockSetupFormatters,
+}));
+jest.mock('./utils/getBootstrapData', () => ({
+ __esModule: true,
+ applicationRoot: mockApplicationRoot,
+ default: mockGetBootstrapData,
+}));
+jest.mock('./utils/pathUtils', () => ({
+ makeUrl: mockMakeUrl,
+}));
+jest.mock('./hooks/useLocale', () => ({}));
+
+const bootstrapData = (locale?: string) => ({
+ common: {
+ d3_format: {},
+ d3_time_format: {},
+ extra_categorical_color_schemes: [],
+ extra_sequential_color_schemes: [],
+ feature_flags: {},
+ locale,
+ },
+ user: {
+ isActive: false,
+ },
+});
+
+async function runPreamble() {
+ const { default: initPreamble } = await import('./preamble');
+ await initPreamble();
+}
+
+beforeEach(() => {
+ jest.clearAllMocks();
+ jest.resetModules();
+});
+
+test('passes bootstrap locale to setupFormatters', async () => {
+ mockGetBootstrapData.mockReturnValue(bootstrapData('pt_BR'));
+
+ await runPreamble();
+
+ expect(mockSetupFormatters).toHaveBeenCalledWith({}, {}, 'pt_BR');
+});
+
+test('falls back to en when passing locale to setupFormatters', async () => {
+ mockGetBootstrapData.mockReturnValue(bootstrapData());
+
+ await runPreamble();
+
+ expect(mockSetupFormatters).toHaveBeenCalledWith({}, {}, 'en');
+});
diff --git a/superset-frontend/src/preamble.ts b/superset-frontend/src/preamble.ts
index 57874fb537e..cc304da84d3 100644
--- a/superset-frontend/src/preamble.ts
+++ b/superset-frontend/src/preamble.ts
@@ -53,10 +53,12 @@ export default function initPreamble(): Promise<void> {
// Grab initial bootstrap data
const bootstrapData = getBootstrapData();
+ const lang = bootstrapData.common.locale || 'en';
setupFormatters(
bootstrapData.common.d3_format,
bootstrapData.common.d3_time_format,
+ lang,
);
// Setup SupersetClient early so we can fetch language pack
@@ -64,7 +66,6 @@ export default function initPreamble(): Promise<void> {
// Load language pack before rendering
// Use native fetch to avoid race condition with SupersetClient initialization
- const lang = bootstrapData.common.locale || 'en';
if (lang !== 'en') {
const abortController = new AbortController();
const timeoutId = window.setTimeout(() => {
diff --git a/superset-frontend/src/setup/setupFormatters.ts b/superset-frontend/src/setup/setupFormatters.ts
index 1f0d17ee2b4..c8d5dc0ef11 100644
--- a/superset-frontend/src/setup/setupFormatters.ts
+++ b/superset-frontend/src/setup/setupFormatters.ts
@@ -36,6 +36,7 @@ import { TimeLocaleDefinition } from 'd3-time-format';
export default function setupFormatters(
d3NumberFormat: Partial<FormatLocaleDefinition>,
d3TimeFormat: Partial<TimeLocaleDefinition>,
+ locale: string,
) {
getNumberFormatterRegistry()
.setD3Format(d3NumberFormat)
@@ -73,14 +74,22 @@ export default function setupFormatters(
.registerValue('$,0', getNumberFormatter('$,.4f'))
.registerValue('$,0f', getNumberFormatter('$,.4f'))
.registerValue('$,.f', getNumberFormatter('$,.4f'))
- .registerValue('DURATION', createDurationFormatter())
+ .registerValue('DURATION', createDurationFormatter({ locale }))
.registerValue(
'DURATION_SUB',
- createDurationFormatter({ formatSubMilliseconds: true }),
+ createDurationFormatter({
+ locale,
+ formatSubMilliseconds: true,
+ }),
)
.registerValue(
'DURATION_COL',
- createDurationFormatter({ colonNotation: true }),
+ createDurationFormatter({
+ locale,
+ style: 'digital',
+ formatSubMilliseconds: true,
+ fractionalDigits: 1,
+ }),
)
.registerValue('MEMORY_DECIMAL', createMemoryFormatter({ binary: false }))
.registerValue('MEMORY_BINARY', createMemoryFormatter({ binary: true }))
diff --git a/superset/translations/ar/LC_MESSAGES/messages.po b/superset/translations/ar/LC_MESSAGES/messages.po
index 1701821bfb8..09489efa8e8 100644
--- a/superset/translations/ar/LC_MESSAGES/messages.po
+++ b/superset/translations/ar/LC_MESSAGES/messages.po
@@ -24,7 +24,7 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2026-05-31 07:03-0700\n"
+"POT-Creation-Date: 2026-06-05 12:59+0300\n"
"PO-Revision-Date: 2024-07-14 15:10+0300\n"
"Last-Translator: Abdalrahim G. Fakhouri <ab...@yahoo.com>\n"
"Language: ar\n"
@@ -34,7 +34,7 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.18.0\n"
+"Generated-By: Babel 2.17.0\n"
msgid ""
"\n"
@@ -1256,6 +1256,10 @@ msgstr "إضافة منسق لون جديد"
msgid "Add new formatter"
msgstr "إضافة منسق جديد"
+#, fuzzy
+msgid "Add numbered column"
+msgstr " لإضافة أعمدة محسوبة"
+
#, fuzzy
msgid "Add or edit display controls"
msgstr "إضافة فلاتر وتعديلها"
@@ -1813,7 +1817,7 @@ msgstr "حدث خطأ أثناء جلب قيم المخطط: %s"
msgid "An error occurred while fetching semantic layer types"
msgstr "حدث خطأ أثناء جلب قوالب CSS المتوفرة"
-#, fuzzy, python-format
+#, fuzzy
msgid "An error occurred while fetching semantic layers"
msgstr "حدث خطأ أثناء جلب قيم المخطط: %s"
@@ -1884,7 +1888,7 @@ msgstr "حدث خطأ أثناء تحليل المفتاح."
msgid "An error occurred while pruning logs "
msgstr "حدث خطأ أثناء تقليم السجلات "
-#, fuzzy, python-format
+#, fuzzy
msgid "An error occurred while refreshing the configuration schema"
msgstr "حدث خطأ أثناء عرض المرئيات: %s"
@@ -2434,7 +2438,7 @@ msgstr "منفذ قاعدة البيانات"
msgid "Base height"
msgstr "ارتفاع الرسم البياني"
-#, fuzzy, python-format
+#, fuzzy
msgid "Base layer map style. Accepts a MapLibre-compatible style URL."
msgstr "نمط خريطة الطبقة الأساسية. راجع وثائق Mapbox: %s"
@@ -4249,6 +4253,13 @@ msgstr "SQL مخصص"
msgid "Custom SQL ad-hoc metrics are not enabled for this dataset"
msgstr "لم يتم تمكين مقاييس SQL المخصصة المخصصة لمجموعة البيانات هذه"
+msgid "Custom SQL fields cannot be parsed as a single SQL statement."
+msgstr ""
+
+#, fuzzy
+msgid "Custom SQL fields cannot contain set operations."
+msgstr "لا يمكن أن تحتوي حقول SQL المخصصة على استعلامات فرعية."
+
msgid "Custom SQL fields cannot contain sub-queries."
msgstr "لا يمكن أن تحتوي حقول SQL المخصصة على استعلامات فرعية."
@@ -5779,7 +5790,7 @@ msgstr ""
"نانوثانية)"
#, fuzzy
-msgid "Duration in ms (10500 => 0:10.5)"
+msgid "Duration in ms (10500 => 0:00:10.5)"
msgstr "المدة بالمللي ثانية (66000 => 1 م 6 ثانية)"
msgid "Duration in ms (66000 => 1m 6s)"
@@ -9465,7 +9476,7 @@ msgstr ""
msgid "No table columns"
msgstr "لا توجد أعمدة جدول"
-#, fuzzy, python-format
+#, fuzzy
msgid "No tasks yet"
msgstr "لا %s حتى الآن"
@@ -9558,6 +9569,10 @@ msgstr "لم يتم تعريفه"
msgid "Not equal to (≠)"
msgstr "لا يساوي (≠)"
+#, fuzzy
+msgid "Not found"
+msgstr "لم يتم العثور على الرسم البياني"
+
msgid "Not in"
msgstr "ليس في"
@@ -10613,6 +10628,12 @@ msgstr "تم إهماله"
msgid "Proportional"
msgstr "نسبي"
+msgid "Public and privately shared sheets"
+msgstr ""
+
+msgid "Publicly shared sheets only"
+msgstr ""
+
msgid "Published"
msgstr "منشورة"
@@ -10876,9 +10897,6 @@ msgstr "التصفية المسبقة"
msgid "Registration date"
msgstr "تاريخ البداية"
-msgid "Registration hash"
-msgstr ""
-
msgid "Registration successful"
msgstr ""
@@ -11393,6 +11411,12 @@ msgstr "SQL"
msgid "SQL Lab"
msgstr "مختبر إس كيو إل"
+msgid ""
+"SQL Lab cannot authorise a statement that could not be fully parsed. "
+"Qualify tables explicitly and avoid dynamic SQL inside stored-procedure "
+"or vendor-specific calls."
+msgstr ""
+
#, fuzzy
msgid "SQL Lab queries"
msgstr "الاستعلامات المحفوظة"
@@ -15609,6 +15633,9 @@ msgstr "اكتب قيمة"
msgid "Type is required"
msgstr "النوع مطلوب"
+msgid "Type of Google Sheets allowed"
+msgstr ""
+
msgid "Type of chart to display in sparkline"
msgstr ""
@@ -15769,6 +15796,10 @@ msgstr "التراجع عن الإجراء"
msgid "Undo?"
msgstr "التراجع؟"
+#, fuzzy
+msgid "Unexpected HTTP 401 response. Check your credentials."
+msgstr "حدث خطأ غير متوقع، يرجى التحقق من سجلاتك للحصول على التفاصيل"
+
msgid "Unexpected error"
msgstr "خطأ غير متوقع"
@@ -16707,6 +16738,10 @@ msgstr "ما إذا كان سيتم عرض القيم الدنيا والقصو
msgid "Whether to display the min and max values of the Y-axis"
msgstr "ما إذا كان سيتم عرض القيم الدنيا والقصوى للمحور Y"
+#, fuzzy
+msgid "Whether to display the numbered column"
+msgstr "ما إذا كان سيتم عرض خط الاتجاه"
+
msgid "Whether to display the numerical values within the cells"
msgstr "ما إذا كان سيتم عرض القيم العددية داخل الخلايا"
@@ -18269,6 +18304,10 @@ msgstr "قيمة تصاعدية"
msgid "value descending"
msgstr "قيمة تنازلي"
+#, fuzzy
+msgid "valuename"
+msgstr "اسم الجدول"
+
msgid "var"
msgstr "VAR"
@@ -18318,25 +18357,8 @@ msgstr ""
msgid "zoom area"
msgstr ""
-#, python-brace-format
-msgid ""
-"{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;"
-"\n"
-"\n"
-"/** The classic emailregex.com regex for RFC 5322-compliant emails */\n"
-"export const rfc5322Email =\n"
-" "
-"/^(([^<>()[]\\.,;:s@\"]+(.[^<>()[]\\.,;:s@\"]+)*)|(\".+\"))@(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}])|(([a-zA-Z-0-9]+.)+[a-zA-Z]{2,}))$/;"
-"\n"
-"\n"
-"/** A loose regex that allows Unicode characters, enforces length limits,"
-" and that's about it. */\n"
-"export const unicodeEmail = /^[^s@\"]{1,64}@[^s@]{1,255}$/u;\n"
-"export const idnEmail = unicodeEmail;\n"
-"\n"
-"export const browserEmail: RegExp =\n"
-" /^[a-zA-Z0-9.!#$%&'*+/=?^_"
+msgid "© Layer attribution"
msgstr ""
-msgid "© Layer attribution"
+msgid "№"
msgstr ""
diff --git a/superset/translations/ca/LC_MESSAGES/messages.po b/superset/translations/ca/LC_MESSAGES/messages.po
index 1ebb89c5253..1c04ae40a87 100644
--- a/superset/translations/ca/LC_MESSAGES/messages.po
+++ b/superset/translations/ca/LC_MESSAGES/messages.po
@@ -21,7 +21,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Superset VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2026-05-31 07:03-0700\n"
+"POT-Creation-Date: 2026-06-05 12:59+0300\n"
"PO-Revision-Date: 2025-06-27 12:56+0200\n"
"Last-Translator: FULL NAME <EM...@ADDRESS>\n"
"Language: ca\n"
@@ -30,7 +30,7 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.18.0\n"
+"Generated-By: Babel 2.17.0\n"
msgid ""
"\n"
@@ -1250,6 +1250,10 @@ msgstr "Afegir nou formatador de color"
msgid "Add new formatter"
msgstr "Afegir nou formatador"
+#, fuzzy
+msgid "Add numbered column"
+msgstr " per afegir columnes calculades"
+
#, fuzzy
msgid "Add or edit display controls"
msgstr "Afegir o editar filtres"
@@ -1827,7 +1831,7 @@ msgstr "S'ha produït un error mentre es recuperaven els valors de l'esquema: %s
msgid "An error occurred while fetching semantic layer types"
msgstr "S'ha produït un error mentre es recuperaven les plantilles CSS disponibles"
-#, fuzzy, python-format
+#, fuzzy
msgid "An error occurred while fetching semantic layers"
msgstr "S'ha produït un error mentre es recuperaven els valors de l'esquema: %s"
@@ -1902,7 +1906,7 @@ msgstr "S'ha produït un error mentre s'analitzava la clau."
msgid "An error occurred while pruning logs "
msgstr "S'ha produït un error mentre es netejaven els registres "
-#, fuzzy, python-format
+#, fuzzy
msgid "An error occurred while refreshing the configuration schema"
msgstr "S'ha produït un error mentre es renderitzava la visualització: %s"
@@ -2455,7 +2459,7 @@ msgstr "Exponent base"
msgid "Base height"
msgstr "Alçada base"
-#, fuzzy, python-format
+#, fuzzy
msgid "Base layer map style. Accepts a MapLibre-compatible style URL."
msgstr "Estil de mapa de capa base. Consulta la documentació de Mapbox: %s"
@@ -4250,6 +4254,13 @@ msgstr ""
"Les mètriques SQL ad-hoc personalitzades no estan habilitades per a "
"aquest conjunt de dades"
+msgid "Custom SQL fields cannot be parsed as a single SQL statement."
+msgstr ""
+
+#, fuzzy
+msgid "Custom SQL fields cannot contain set operations."
+msgstr "Els camps SQL personalitzats no poden contenir sub-consultes."
+
msgid "Custom SQL fields cannot contain sub-queries."
msgstr "Els camps SQL personalitzats no poden contenir sub-consultes."
@@ -5720,8 +5731,8 @@ msgstr "Duració en ms (1.40008 => 1ms 400µs 80ns)"
msgid "Duration in ms (100.40008 => 100ms 400µs 80ns)"
msgstr "Duració en ms (100.40008 => 100ms 400µs 80ns)"
-msgid "Duration in ms (10500 => 0:10.5)"
-msgstr "Duració en ms (10500 => 0:10.5)"
+msgid "Duration in ms (10500 => 0:00:10.5)"
+msgstr "Duració en ms (10500 => 0:00:10.5)"
msgid "Duration in ms (66000 => 1m 6s)"
msgstr "Duració en ms (66000 => 1m 6s)"
@@ -9369,7 +9380,7 @@ msgstr ""
msgid "No table columns"
msgstr "Cap columna de taula"
-#, fuzzy, python-format
+#, fuzzy
msgid "No tasks yet"
msgstr "Cap %s encara"
@@ -9461,6 +9472,10 @@ msgstr "No definit"
msgid "Not equal to (≠)"
msgstr "No igual a (≠)"
+#, fuzzy
+msgid "Not found"
+msgstr "Gràfic no trobat"
+
msgid "Not in"
msgstr "No en"
@@ -10526,6 +10541,12 @@ msgstr "ID del Projecte"
msgid "Proportional"
msgstr "Proporcional"
+msgid "Public and privately shared sheets"
+msgstr ""
+
+msgid "Publicly shared sheets only"
+msgstr ""
+
msgid "Published"
msgstr "Publicat"
@@ -10788,9 +10809,6 @@ msgstr "Pre-filtre"
msgid "Registration date"
msgstr "Data d'inici"
-msgid "Registration hash"
-msgstr ""
-
msgid "Registration successful"
msgstr ""
@@ -11296,6 +11314,12 @@ msgstr "SQL"
msgid "SQL Lab"
msgstr "SQL Lab"
+msgid ""
+"SQL Lab cannot authorise a statement that could not be fully parsed. "
+"Qualify tables explicitly and avoid dynamic SQL inside stored-procedure "
+"or vendor-specific calls."
+msgstr ""
+
msgid "SQL Lab queries"
msgstr "Consultes del SQL Lab"
@@ -15597,6 +15621,9 @@ msgstr "Escriu un valor"
msgid "Type is required"
msgstr "El tipus és obligatori"
+msgid "Type of Google Sheets allowed"
+msgstr ""
+
msgid "Type of chart to display in sparkline"
msgstr ""
@@ -15760,6 +15787,12 @@ msgstr "Desfer l'acció"
msgid "Undo?"
msgstr "Desfer?"
+#, fuzzy
+msgid "Unexpected HTTP 401 response. Check your credentials."
+msgstr ""
+"Ha ocorregut un error inesperat, si us plau comprova els teus logs per "
+"detalls"
+
msgid "Unexpected error"
msgstr "Error inesperat"
@@ -16698,6 +16731,10 @@ msgstr "Si mostrar els valors mínims i màxims de l'eix X"
msgid "Whether to display the min and max values of the Y-axis"
msgstr "Si mostrar els valors mínims i màxims de l'eix Y"
+#, fuzzy
+msgid "Whether to display the numbered column"
+msgstr "Si mostrar la línia de tendència"
+
msgid "Whether to display the numerical values within the cells"
msgstr "Si mostrar els valors numèrics dins les cel·les"
@@ -18263,6 +18300,10 @@ msgstr "valor ascendent"
msgid "value descending"
msgstr "valor descendent"
+#, fuzzy
+msgid "valuename"
+msgstr "Nom de taula"
+
msgid "var"
msgstr "var"
@@ -18311,25 +18352,8 @@ msgstr ""
msgid "zoom area"
msgstr "àrea de zoom"
-#, python-brace-format
-msgid ""
-"{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;"
-"\n"
-"\n"
-"/** The classic emailregex.com regex for RFC 5322-compliant emails */\n"
-"export const rfc5322Email =\n"
-" "
-"/^(([^<>()[]\\.,;:s@\"]+(.[^<>()[]\\.,;:s@\"]+)*)|(\".+\"))@(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}])|(([a-zA-Z-0-9]+.)+[a-zA-Z]{2,}))$/;"
-"\n"
-"\n"
-"/** A loose regex that allows Unicode characters, enforces length limits,"
-" and that's about it. */\n"
-"export const unicodeEmail = /^[^s@\"]{1,64}@[^s@]{1,255}$/u;\n"
-"export const idnEmail = unicodeEmail;\n"
-"\n"
-"export const browserEmail: RegExp =\n"
-" /^[a-zA-Z0-9.!#$%&'*+/=?^_"
-msgstr ""
-
msgid "© Layer attribution"
msgstr "© Atribució de capa"
+
+msgid "№"
+msgstr ""
diff --git a/superset/translations/cs/LC_MESSAGES/messages.po b/superset/translations/cs/LC_MESSAGES/messages.po
index efdbaeb8eb9..b6abe64fe6c 100644
--- a/superset/translations/cs/LC_MESSAGES/messages.po
+++ b/superset/translations/cs/LC_MESSAGES/messages.po
@@ -18,7 +18,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Superset VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2026-05-31 07:03-0700\n"
+"POT-Creation-Date: 2026-06-05 12:59+0300\n"
"PO-Revision-Date: 2016-05-02 08:49-0700\n"
"Last-Translator: Jan Šmejkal <ja...@orgis.cz>\n"
"Language: cs\n"
@@ -28,7 +28,7 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.18.0\n"
+"Generated-By: Babel 2.17.0\n"
msgid ""
"\n"
@@ -1254,6 +1254,10 @@ msgstr "Přidat nový formátovač barev"
msgid "Add new formatter"
msgstr "Přidat nový formátovač"
+#, fuzzy
+msgid "Add numbered column"
+msgstr " pro přidání počítaných sloupců"
+
#, fuzzy
msgid "Add or edit display controls"
msgstr "Přidat nebo upravit ovládací prvky zobrazení"
@@ -1814,7 +1818,7 @@ msgstr "Při načítání hodnot schématu došlo k chybě: %s"
msgid "An error occurred while fetching semantic layer types"
msgstr "Při načítání dostupných témat došlo k chybě"
-#, fuzzy, python-format
+#, fuzzy
msgid "An error occurred while fetching semantic layers"
msgstr "Při načítání hodnot schématu došlo k chybě: %s"
@@ -1887,7 +1891,7 @@ msgstr "Při parsování klíče došlo k chybě."
msgid "An error occurred while pruning logs "
msgstr "Při promazávání protokolů došlo k chybě "
-#, fuzzy, python-format
+#, fuzzy
msgid "An error occurred while refreshing the configuration schema"
msgstr "Při vykreslování vizualizace došlo k chybě: %s"
@@ -2447,7 +2451,7 @@ msgstr "Exponent základu"
msgid "Base height"
msgstr "Výška základu"
-#, fuzzy, python-format
+#, fuzzy
msgid "Base layer map style. Accepts a MapLibre-compatible style URL."
msgstr "Styl mapy základní vrstvy. Viz dokumentaci Mapbox: %s"
@@ -4227,6 +4231,13 @@ msgstr "Vlastní SQL"
msgid "Custom SQL ad-hoc metrics are not enabled for this dataset"
msgstr "Vlastní SQL ad-hoc metriky nejsou pro tuto sadu dat povoleny"
+msgid "Custom SQL fields cannot be parsed as a single SQL statement."
+msgstr ""
+
+#, fuzzy
+msgid "Custom SQL fields cannot contain set operations."
+msgstr "Vlastní pole SQL nemohou obsahovat poddotazy."
+
msgid "Custom SQL fields cannot contain sub-queries."
msgstr "Vlastní pole SQL nemohou obsahovat poddotazy."
@@ -5714,8 +5725,8 @@ msgstr "Trvání v ms (1.40008 => 1ms 400µs 80ns)"
msgid "Duration in ms (100.40008 => 100ms 400µs 80ns)"
msgstr "Trvání v ms (100.40008 => 100ms 400µs 80ns)"
-msgid "Duration in ms (10500 => 0:10.5)"
-msgstr "Trvání v ms (10500 => 0:10.5)"
+msgid "Duration in ms (10500 => 0:00:10.5)"
+msgstr "Trvání v ms (10500 => 0:00:10.5)"
msgid "Duration in ms (66000 => 1m 6s)"
msgstr "Trvání v ms (66000 => 1m 6s)"
@@ -9357,7 +9368,7 @@ msgstr ""
msgid "No table columns"
msgstr "Žádné sloupce tabulky"
-#, fuzzy, python-format
+#, fuzzy
msgid "No tasks yet"
msgstr "Zatím žádné %s"
@@ -9446,6 +9457,10 @@ msgstr "Nedefinováno"
msgid "Not equal to (≠)"
msgstr "Nerovná se (≠)"
+#, fuzzy
+msgid "Not found"
+msgstr "Graf nenalezen"
+
msgid "Not in"
msgstr "Není v"
@@ -10500,6 +10515,12 @@ msgstr "ID projektu"
msgid "Proportional"
msgstr "Proporcionální"
+msgid "Public and privately shared sheets"
+msgstr ""
+
+msgid "Publicly shared sheets only"
+msgstr ""
+
msgid "Published"
msgstr "Zveřejněno"
@@ -10760,9 +10781,6 @@ msgstr "Registrovat"
msgid "Registration date"
msgstr "Datum registrace"
-msgid "Registration hash"
-msgstr "Hash registrace"
-
msgid "Registration successful"
msgstr "Registrace úspěšná"
@@ -11269,6 +11287,12 @@ msgstr "SQL"
msgid "SQL Lab"
msgstr "SQL Lab"
+msgid ""
+"SQL Lab cannot authorise a statement that could not be fully parsed. "
+"Qualify tables explicitly and avoid dynamic SQL inside stored-procedure "
+"or vendor-specific calls."
+msgstr ""
+
msgid "SQL Lab queries"
msgstr "Dotazy SQL Labu"
@@ -15524,6 +15548,9 @@ msgstr "Napište hodnotu"
msgid "Type is required"
msgstr "Typ je povinný"
+msgid "Type of Google Sheets allowed"
+msgstr ""
+
msgid "Type of chart to display in sparkline"
msgstr "Typ grafu pro zobrazení ve sparkline"
@@ -15687,6 +15714,12 @@ msgstr "Vrátit akci zpět"
msgid "Undo?"
msgstr "Zpět?"
+#, fuzzy
+msgid "Unexpected HTTP 401 response. Check your credentials."
+msgstr ""
+"Došlo k neočekávané chybě, zkontrolujte prosím své protokoly pro "
+"podrobnosti"
+
msgid "Unexpected error"
msgstr "Neočekávaná chyba"
@@ -16645,6 +16678,10 @@ msgstr "Zda zobrazit minimální a maximální hodnoty osy X"
msgid "Whether to display the min and max values of the Y-axis"
msgstr "Zda zobrazit minimální a maximální hodnoty osy Y"
+#, fuzzy
+msgid "Whether to display the numbered column"
+msgstr "Zda zobrazit trendovou čáru"
+
msgid "Whether to display the numerical values within the cells"
msgstr "Zda zobrazit číselné hodnoty v buňkách"
@@ -18204,6 +18241,10 @@ msgstr "hodnota vzestupně"
msgid "value descending"
msgstr "hodnota sestupně"
+#, fuzzy
+msgid "valuename"
+msgstr "Název tabulky"
+
msgid "var"
msgstr "var"
@@ -18252,25 +18293,8 @@ msgstr "your-project-1234-a1"
msgid "zoom area"
msgstr "oblast přiblížení"
-#, python-brace-format
-msgid ""
-"{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;"
-"\n"
-"\n"
-"/** The classic emailregex.com regex for RFC 5322-compliant emails */\n"
-"export const rfc5322Email =\n"
-" "
-"/^(([^<>()[]\\.,;:s@\"]+(.[^<>()[]\\.,;:s@\"]+)*)|(\".+\"))@(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}])|(([a-zA-Z-0-9]+.)+[a-zA-Z]{2,}))$/;"
-"\n"
-"\n"
-"/** A loose regex that allows Unicode characters, enforces length limits,"
-" and that's about it. */\n"
-"export const unicodeEmail = /^[^s@\"]{1,64}@[^s@]{1,255}$/u;\n"
-"export const idnEmail = unicodeEmail;\n"
-"\n"
-"export const browserEmail: RegExp =\n"
-" /^[a-zA-Z0-9.!#$%&'*+/=?^_"
-msgstr ""
-
msgid "© Layer attribution"
msgstr "© Atribuce vrstvy"
+
+msgid "№"
+msgstr ""
diff --git a/superset/translations/de/LC_MESSAGES/messages.po b/superset/translations/de/LC_MESSAGES/messages.po
index e3904578546..79beed0e360 100644
--- a/superset/translations/de/LC_MESSAGES/messages.po
+++ b/superset/translations/de/LC_MESSAGES/messages.po
@@ -18,7 +18,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2026-05-31 07:03-0700\n"
+"POT-Creation-Date: 2026-06-05 12:59+0300\n"
"PO-Revision-Date: 2023-04-07 19:45+0200\n"
"Last-Translator: Holger Bruch <ho...@wattbewerb.de>\n"
"Language: de\n"
@@ -27,7 +27,7 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.18.0\n"
+"Generated-By: Babel 2.17.0\n"
msgid ""
"\n"
@@ -1258,6 +1258,10 @@ msgstr "Neuen Farbformatierer hinzufügen"
msgid "Add new formatter"
msgstr "Neuen Formatierer hinzufügen"
+#, fuzzy
+msgid "Add numbered column"
+msgstr ", um berechnete Spalten hinzuzufügen"
+
#, fuzzy
msgid "Add or edit display controls"
msgstr "Hinzufügen und Bearbeiten von Filtern"
@@ -1831,7 +1835,7 @@ msgstr "Beim Abrufen von Schemawerten ist ein Fehler aufgetreten: %s"
msgid "An error occurred while fetching semantic layer types"
msgstr "Beim Abrufen verfügbarer CSS-Vorlagen ist ein Fehler aufgetreten"
-#, fuzzy, python-format
+#, fuzzy
msgid "An error occurred while fetching semantic layers"
msgstr "Beim Abrufen von Schemawerten ist ein Fehler aufgetreten: %s"
@@ -1906,7 +1910,7 @@ msgstr "Beim Parsen des Schlüssels ist ein Fehler aufgetreten."
msgid "An error occurred while pruning logs "
msgstr "Beim Kürzen von Protokollen ist ein Fehler aufgetreten "
-#, fuzzy, python-format
+#, fuzzy
msgid "An error occurred while refreshing the configuration schema"
msgstr "Bei der Darstellung dieser Visualisierung ist ein Fehler aufgetreten: %s"
@@ -2469,7 +2473,7 @@ msgstr "Datenbankport"
msgid "Base height"
msgstr "Diagrammhöhe"
-#, fuzzy, python-format
+#, fuzzy
msgid "Base layer map style. Accepts a MapLibre-compatible style URL."
msgstr "Kartenstil der Basisebene. Siehe Mapbox-Dokumentation: %s"
@@ -4313,6 +4317,13 @@ msgstr ""
"Benutzerdefinierte SQL-Ad-hoc-Metriken sind für diesen Datasatz nicht "
"aktiviert"
+msgid "Custom SQL fields cannot be parsed as a single SQL statement."
+msgstr ""
+
+#, fuzzy
+msgid "Custom SQL fields cannot contain set operations."
+msgstr "Benutzerdefinierte SQL-Felder dürfen keine Unterabfragen enthalten."
+
msgid "Custom SQL fields cannot contain sub-queries."
msgstr "Benutzerdefinierte SQL-Felder dürfen keine Unterabfragen enthalten."
@@ -5807,7 +5818,7 @@ msgid "Duration in ms (100.40008 => 100ms 400µs 80ns)"
msgstr "Dauer in ms (100,40008 => 100ms 400μs 80ns)"
#, fuzzy
-msgid "Duration in ms (10500 => 0:10.5)"
+msgid "Duration in ms (10500 => 0:00:10.5)"
msgstr "Dauer in ms (66000 => 1m 6s)"
msgid "Duration in ms (66000 => 1m 6s)"
@@ -9528,7 +9539,7 @@ msgstr ""
msgid "No table columns"
msgstr "Keine Tabellenspalten"
-#, fuzzy, python-format
+#, fuzzy
msgid "No tasks yet"
msgstr "Noch keine %s"
@@ -9621,6 +9632,10 @@ msgstr "Nicht definiert"
msgid "Not equal to (≠)"
msgstr "Ist nicht gleich (≠)"
+#, fuzzy
+msgid "Not found"
+msgstr "Diagramm nicht gefunden"
+
msgid "Not in"
msgstr "Nicht in"
@@ -10721,6 +10736,12 @@ msgstr "Veraltet"
msgid "Proportional"
msgstr "Proportional"
+msgid "Public and privately shared sheets"
+msgstr ""
+
+msgid "Publicly shared sheets only"
+msgstr ""
+
msgid "Published"
msgstr "Veröffentlicht"
@@ -10984,9 +11005,6 @@ msgstr "Vorfilter"
msgid "Registration date"
msgstr "Startdatum"
-msgid "Registration hash"
-msgstr ""
-
msgid "Registration successful"
msgstr ""
@@ -11502,6 +11520,12 @@ msgstr "SQL"
msgid "SQL Lab"
msgstr "SQL Lab"
+msgid ""
+"SQL Lab cannot authorise a statement that could not be fully parsed. "
+"Qualify tables explicitly and avoid dynamic SQL inside stored-procedure "
+"or vendor-specific calls."
+msgstr ""
+
#, fuzzy
msgid "SQL Lab queries"
msgstr "gespeicherte Abfragen"
@@ -15892,6 +15916,9 @@ msgstr "Geben Sie einen Wert ein"
msgid "Type is required"
msgstr "Typ ist erforderlich"
+msgid "Type of Google Sheets allowed"
+msgstr ""
+
msgid "Type of chart to display in sparkline"
msgstr ""
@@ -16059,6 +16086,12 @@ msgstr "Aktion rückgängig machen"
msgid "Undo?"
msgstr "Rückgängig machen?"
+#, fuzzy
+msgid "Unexpected HTTP 401 response. Check your credentials."
+msgstr ""
+"Unerwarteter Fehler aufgetreten, bitte überprüfen Sie Ihre Protokolle auf"
+" Details"
+
msgid "Unexpected error"
msgstr "Unerwarteter Fehler"
@@ -17056,6 +17089,10 @@ msgstr "Ob die Min- und Max-Werte der X-Achse angezeigt werden sollen"
msgid "Whether to display the min and max values of the Y-axis"
msgstr "Ob die Min- und Max-Werte der Y-Achse angezeigt werden sollen"
+#, fuzzy
+msgid "Whether to display the numbered column"
+msgstr "Ob die Trendlinie angezeigt werden soll"
+
msgid "Whether to display the numerical values within the cells"
msgstr "Ob die numerischen Werte innerhalb der Zellen angezeigt werden sollen"
@@ -18645,6 +18682,10 @@ msgstr "Wert aufsteigend"
msgid "value descending"
msgstr "Wert absteigend"
+#, fuzzy
+msgid "valuename"
+msgstr "Tabellenname"
+
msgid "var"
msgstr "var"
@@ -18693,25 +18734,8 @@ msgstr ""
msgid "zoom area"
msgstr "Zoombereich"
-#, python-brace-format
-msgid ""
-"{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;"
-"\n"
-"\n"
-"/** The classic emailregex.com regex for RFC 5322-compliant emails */\n"
-"export const rfc5322Email =\n"
-" "
-"/^(([^<>()[]\\.,;:s@\"]+(.[^<>()[]\\.,;:s@\"]+)*)|(\".+\"))@(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}])|(([a-zA-Z-0-9]+.)+[a-zA-Z]{2,}))$/;"
-"\n"
-"\n"
-"/** A loose regex that allows Unicode characters, enforces length limits,"
-" and that's about it. */\n"
-"export const unicodeEmail = /^[^s@\"]{1,64}@[^s@]{1,255}$/u;\n"
-"export const idnEmail = unicodeEmail;\n"
-"\n"
-"export const browserEmail: RegExp =\n"
-" /^[a-zA-Z0-9.!#$%&'*+/=?^_"
+msgid "© Layer attribution"
msgstr ""
-msgid "© Layer attribution"
+msgid "№"
msgstr ""
diff --git a/superset/translations/en/LC_MESSAGES/messages.po b/superset/translations/en/LC_MESSAGES/messages.po
index c356a2e31d7..39cb3dacb0b 100644
--- a/superset/translations/en/LC_MESSAGES/messages.po
+++ b/superset/translations/en/LC_MESSAGES/messages.po
@@ -17,7 +17,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2026-05-31 07:03-0700\n"
+"POT-Creation-Date: 2026-06-05 12:59+0300\n"
"PO-Revision-Date: 2016-05-02 08:49-0700\n"
"Last-Translator: FULL NAME <EM...@ADDRESS>\n"
"Language: en\n"
@@ -26,7 +26,7 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.18.0\n"
+"Generated-By: Babel 2.17.0\n"
msgid ""
"\n"
@@ -1105,6 +1105,9 @@ msgstr ""
msgid "Add new formatter"
msgstr ""
+msgid "Add numbered column"
+msgstr ""
+
msgid "Add or edit display controls"
msgstr ""
@@ -3832,6 +3835,12 @@ msgstr ""
msgid "Custom SQL ad-hoc metrics are not enabled for this dataset"
msgstr ""
+msgid "Custom SQL fields cannot be parsed as a single SQL statement."
+msgstr ""
+
+msgid "Custom SQL fields cannot contain set operations."
+msgstr ""
+
msgid "Custom SQL fields cannot contain sub-queries."
msgstr ""
@@ -4541,7 +4550,7 @@ msgstr ""
msgid "Delete Role?"
msgstr ""
-#, fuzzy, python-format
+#, fuzzy
msgid "Delete Semantic Layer?"
msgstr ""
@@ -5146,7 +5155,7 @@ msgstr ""
msgid "Duration in ms (100.40008 => 100ms 400µs 80ns)"
msgstr ""
-msgid "Duration in ms (10500 => 0:10.5)"
+msgid "Duration in ms (10500 => 0:00:10.5)"
msgstr ""
msgid "Duration in ms (66000 => 1m 6s)"
@@ -6165,7 +6174,7 @@ msgstr ""
msgid "Filter only displays values relevant to selections made in other filters."
msgstr ""
-#, fuzzy, python-format
+#, fuzzy
msgid "Filter options"
msgstr ""
@@ -8593,6 +8602,9 @@ msgstr ""
msgid "Not equal to (≠)"
msgstr ""
+msgid "Not found"
+msgstr ""
+
msgid "Not in"
msgstr ""
@@ -9553,6 +9565,12 @@ msgstr ""
msgid "Proportional"
msgstr ""
+msgid "Public and privately shared sheets"
+msgstr ""
+
+msgid "Publicly shared sheets only"
+msgstr ""
+
msgid "Published"
msgstr ""
@@ -9717,7 +9735,7 @@ msgstr ""
msgid "Recipients are separated by \",\" or \";\""
msgstr ""
-#, fuzzy, python-format
+#, fuzzy
msgid "Records"
msgstr ""
@@ -9798,9 +9816,6 @@ msgstr ""
msgid "Registration date"
msgstr ""
-msgid "Registration hash"
-msgstr ""
-
msgid "Registration successful"
msgstr ""
@@ -10268,6 +10283,12 @@ msgstr ""
msgid "SQL Lab"
msgstr ""
+msgid ""
+"SQL Lab cannot authorise a statement that could not be fully parsed. "
+"Qualify tables explicitly and avoid dynamic SQL inside stored-procedure "
+"or vendor-specific calls."
+msgstr ""
+
msgid "SQL Lab queries"
msgstr ""
@@ -14015,6 +14036,9 @@ msgstr ""
msgid "Type is required"
msgstr ""
+msgid "Type of Google Sheets allowed"
+msgstr ""
+
msgid "Type of chart to display in sparkline"
msgstr ""
@@ -14152,6 +14176,9 @@ msgstr ""
msgid "Undo?"
msgstr ""
+msgid "Unexpected HTTP 401 response. Check your credentials."
+msgstr ""
+
msgid "Unexpected error"
msgstr ""
@@ -14982,6 +15009,9 @@ msgstr ""
msgid "Whether to display the min and max values of the Y-axis"
msgstr ""
+msgid "Whether to display the numbered column"
+msgstr ""
+
msgid "Whether to display the numerical values within the cells"
msgstr ""
@@ -16413,6 +16443,9 @@ msgstr ""
msgid "value descending"
msgstr ""
+msgid "valuename"
+msgstr ""
+
msgid "var"
msgstr ""
@@ -16461,25 +16494,8 @@ msgstr ""
msgid "zoom area"
msgstr ""
-#, python-brace-format
-msgid ""
-"{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;"
-"\n"
-"\n"
-"/** The classic emailregex.com regex for RFC 5322-compliant emails */\n"
-"export const rfc5322Email =\n"
-" "
-"/^(([^<>()[]\\.,;:s@\"]+(.[^<>()[]\\.,;:s@\"]+)*)|(\".+\"))@(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}])|(([a-zA-Z-0-9]+.)+[a-zA-Z]{2,}))$/;"
-"\n"
-"\n"
-"/** A loose regex that allows Unicode characters, enforces length limits,"
-" and that's about it. */\n"
-"export const unicodeEmail = /^[^s@\"]{1,64}@[^s@]{1,255}$/u;\n"
-"export const idnEmail = unicodeEmail;\n"
-"\n"
-"export const browserEmail: RegExp =\n"
-" /^[a-zA-Z0-9.!#$%&'*+/=?^_"
+msgid "© Layer attribution"
msgstr ""
-msgid "© Layer attribution"
+msgid "№"
msgstr ""
diff --git a/superset/translations/es/LC_MESSAGES/messages.po b/superset/translations/es/LC_MESSAGES/messages.po
index b564abf5f07..8bc01a868e7 100644
--- a/superset/translations/es/LC_MESSAGES/messages.po
+++ b/superset/translations/es/LC_MESSAGES/messages.po
@@ -17,7 +17,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2026-05-31 07:03-0700\n"
+"POT-Creation-Date: 2026-06-05 12:59+0300\n"
"PO-Revision-Date: 2016-05-02 08:49-0700\n"
"Last-Translator: FULL NAME <EM...@ADDRESS>\n"
"Language: es\n"
@@ -26,7 +26,7 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.18.0\n"
+"Generated-By: Babel 2.17.0\n"
msgid ""
"\n"
@@ -1269,6 +1269,10 @@ msgstr "Añadir nuevo formateador de color"
msgid "Add new formatter"
msgstr "Añadir nuevo formateador"
+#, fuzzy
+msgid "Add numbered column"
+msgstr " para añadir columnas calculadas"
+
#, fuzzy
msgid "Add or edit display controls"
msgstr "Añadir o editar filtros"
@@ -1850,7 +1854,7 @@ msgstr "Se ha producido un error al recuperar los valores del esquema: %s"
msgid "An error occurred while fetching semantic layer types"
msgstr "Se ha producido un error al recuperar las plantillas CSS disponibles"
-#, fuzzy, python-format
+#, fuzzy
msgid "An error occurred while fetching semantic layers"
msgstr "Se ha producido un error al recuperar los valores del esquema: %s"
@@ -1925,7 +1929,7 @@ msgstr "Se ha producido un error al analizar la clave."
msgid "An error occurred while pruning logs "
msgstr "Se ha producido un error al depurar los registros "
-#, fuzzy, python-format
+#, fuzzy
msgid "An error occurred while refreshing the configuration schema"
msgstr "Se ha producido un error al renderizar la visualización: %s"
@@ -2512,7 +2516,7 @@ msgstr "Exponente de la base"
msgid "Base height"
msgstr "Altura de la base"
-#, fuzzy, python-format
+#, fuzzy
msgid "Base layer map style. Accepts a MapLibre-compatible style URL."
msgstr "Estilo del mapa de la capa base. Consulta la documentación de Mapbox: %s"
@@ -4383,6 +4387,13 @@ msgstr ""
"Las métricas «ad hoc» SQL personalizadas no están habilitadas para este "
"conjunto de datos"
+msgid "Custom SQL fields cannot be parsed as a single SQL statement."
+msgstr ""
+
+#, fuzzy
+msgid "Custom SQL fields cannot contain set operations."
+msgstr "Los campos SQL personalizados no pueden contener subconsultas."
+
msgid "Custom SQL fields cannot contain sub-queries."
msgstr "Los campos SQL personalizados no pueden contener subconsultas."
@@ -5919,8 +5930,8 @@ msgstr "Duración en ms (1,40008 => 1 ms 400 µs 80 ns)"
msgid "Duration in ms (100.40008 => 100ms 400µs 80ns)"
msgstr "Duración en ms (100.40008 => 100 ms 400 µs 80 ns)"
-msgid "Duration in ms (10500 => 0:10.5)"
-msgstr "Duración en ms (10500 => 0:10.5)"
+msgid "Duration in ms (10500 => 0:00:10.5)"
+msgstr "Duración en ms (10500 => 0:00:10.5)"
msgid "Duration in ms (66000 => 1m 6s)"
msgstr "Duración en ms (66 000 => 1 m 6 s)"
@@ -9727,7 +9738,7 @@ msgstr ""
msgid "No table columns"
msgstr "No hay columnas de la tabla"
-#, fuzzy, python-format
+#, fuzzy
msgid "No tasks yet"
msgstr "Todavía no hay %s"
@@ -9819,6 +9830,10 @@ msgstr "Sin definir"
msgid "Not equal to (≠)"
msgstr "No es igual a (≠)"
+#, fuzzy
+msgid "Not found"
+msgstr "No se ha encontrado ningún gráfico"
+
msgid "Not in"
msgstr "No está en"
@@ -10907,6 +10922,12 @@ msgstr "ID del proyecto"
msgid "Proportional"
msgstr "Proporcional"
+msgid "Public and privately shared sheets"
+msgstr ""
+
+msgid "Publicly shared sheets only"
+msgstr ""
+
msgid "Published"
msgstr "Publicado"
@@ -11170,11 +11191,6 @@ msgstr "Filtro previo"
msgid "Registration date"
msgstr "Fecha de inicio"
-# Machine-translated via backfill_po.py (claude-sonnet-4-6) [refs: fr, ru]
-#, fuzzy
-msgid "Registration hash"
-msgstr "Hash de registro"
-
# Machine-translated via backfill_po.py (claude-sonnet-4-6) [refs: fr, ru]
#, fuzzy
msgid "Registration successful"
@@ -11706,6 +11722,12 @@ msgstr "SQL"
msgid "SQL Lab"
msgstr "SQL Lab"
+msgid ""
+"SQL Lab cannot authorise a statement that could not be fully parsed. "
+"Qualify tables explicitly and avoid dynamic SQL inside stored-procedure "
+"or vendor-specific calls."
+msgstr ""
+
msgid "SQL Lab queries"
msgstr "Consultas de SQL Lab"
@@ -16219,6 +16241,9 @@ msgstr "Introduce un valor"
msgid "Type is required"
msgstr "El tipo es obligatorio"
+msgid "Type of Google Sheets allowed"
+msgstr ""
+
# Machine-translated via backfill_po.py (claude-sonnet-4-6) [refs: fr, ru]
#, fuzzy
msgid "Type of chart to display in sparkline"
@@ -16399,6 +16424,12 @@ msgstr "Deshacer la acción"
msgid "Undo?"
msgstr "¿Deshacer?"
+#, fuzzy
+msgid "Unexpected HTTP 401 response. Check your credentials."
+msgstr ""
+"Se ha producido un error inesperado; comprueba tus registros para obtener"
+" más información"
+
msgid "Unexpected error"
msgstr "Error inesperado"
@@ -17393,6 +17424,10 @@ msgstr "Si se deben mostrar los valores mínimo y máximo del eje X"
msgid "Whether to display the min and max values of the Y-axis"
msgstr "Si se deben mostrar los valores mínimo y máximo del eje Y"
+#, fuzzy
+msgid "Whether to display the numbered column"
+msgstr "Si se debe mostrar la línea de tendencia"
+
msgid "Whether to display the numerical values within the cells"
msgstr "Si se deben mostrar los valores numéricos dentro de las celdas"
@@ -18986,6 +19021,10 @@ msgstr "valor ascendente"
msgid "value descending"
msgstr "valor descendente"
+#, fuzzy
+msgid "valuename"
+msgstr "Nombre de la tabla"
+
msgid "var"
msgstr "var."
@@ -19036,25 +19075,8 @@ msgstr "your-project-1234-a1"
msgid "zoom area"
msgstr "área del «zoom»"
-#, python-brace-format
-msgid ""
-"{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;"
-"\n"
-"\n"
-"/** The classic emailregex.com regex for RFC 5322-compliant emails */\n"
-"export const rfc5322Email =\n"
-" "
-"/^(([^<>()[]\\.,;:s@\"]+(.[^<>()[]\\.,;:s@\"]+)*)|(\".+\"))@(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}])|(([a-zA-Z-0-9]+.)+[a-zA-Z]{2,}))$/;"
-"\n"
-"\n"
-"/** A loose regex that allows Unicode characters, enforces length limits,"
-" and that's about it. */\n"
-"export const unicodeEmail = /^[^s@\"]{1,64}@[^s@]{1,255}$/u;\n"
-"export const idnEmail = unicodeEmail;\n"
-"\n"
-"export const browserEmail: RegExp =\n"
-" /^[a-zA-Z0-9.!#$%&'*+/=?^_"
-msgstr ""
-
msgid "© Layer attribution"
msgstr "© Atribución de la capa"
+
+msgid "№"
+msgstr ""
diff --git a/superset/translations/fa/LC_MESSAGES/messages.po b/superset/translations/fa/LC_MESSAGES/messages.po
index 55a12241a87..80e3de95092 100644
--- a/superset/translations/fa/LC_MESSAGES/messages.po
+++ b/superset/translations/fa/LC_MESSAGES/messages.po
@@ -21,7 +21,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Superset VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2026-05-31 07:03-0700\n"
+"POT-Creation-Date: 2026-06-05 12:59+0300\n"
"PO-Revision-Date: 2024-10-20 00:07+0330\n"
"Last-Translator: Emad Rad <co...@gmail.com>\n"
"Language: fa\n"
@@ -30,7 +30,7 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.18.0\n"
+"Generated-By: Babel 2.17.0\n"
msgid ""
"\n"
@@ -1224,6 +1224,10 @@ msgstr "فرمتکننده رنگ جدیدی اضافه کنید."
msgid "Add new formatter"
msgstr "فرمتکننده جدید اضافه کن"
+#, fuzzy
+msgid "Add numbered column"
+msgstr "برای اضافه کردن ستونهای محاسبهشده"
+
#, fuzzy
msgid "Add or edit display controls"
msgstr "فیلترها را اضافه و ویرایش کنید"
@@ -1773,7 +1777,7 @@ msgstr "در حین دریافت ارزشهای طرح خطایی رخ داد
msgid "An error occurred while fetching semantic layer types"
msgstr "در هنگام بارگیری الگوهای CSS موجود یک خطا رخ داد"
-#, fuzzy, python-format
+#, fuzzy
msgid "An error occurred while fetching semantic layers"
msgstr "در حین دریافت ارزشهای طرح خطایی رخ داد: %s"
@@ -1844,7 +1848,7 @@ msgstr "یک خطا در حین تجزیه کلید رخ داد."
msgid "An error occurred while pruning logs "
msgstr "در حین قطع کردن گزارشها خطایی رخ داد"
-#, fuzzy, python-format
+#, fuzzy
msgid "An error occurred while refreshing the configuration schema"
msgstr "یک خطا در هنگام رسم تجسم رخ داده است: %s"
@@ -2401,7 +2405,7 @@ msgstr "پورت پایگاه داده"
msgid "Base height"
msgstr "ارتفاع نمودار"
-#, fuzzy, python-format
+#, fuzzy
msgid "Base layer map style. Accepts a MapLibre-compatible style URL."
msgstr "سبک نقشه لایه پایه. به مستندات Mapbox مراجعه کنید: %s"
@@ -4194,6 +4198,13 @@ msgstr "SQL سفارشی"
msgid "Custom SQL ad-hoc metrics are not enabled for this dataset"
msgstr "متریکهای SQL سفارشی ad-hoc برای این مجموعه داده فعال نیستند."
+msgid "Custom SQL fields cannot be parsed as a single SQL statement."
+msgstr ""
+
+#, fuzzy
+msgid "Custom SQL fields cannot contain set operations."
+msgstr "فیلدهای SQL سفارشی نمیتوانند شامل زیرکوئریها باشند."
+
msgid "Custom SQL fields cannot contain sub-queries."
msgstr "فیلدهای SQL سفارشی نمیتوانند شامل زیرکوئریها باشند."
@@ -5667,7 +5678,7 @@ msgstr ""
" نانوثانیه)"
#, fuzzy
-msgid "Duration in ms (10500 => 0:10.5)"
+msgid "Duration in ms (10500 => 0:00:10.5)"
msgstr "مدت زمان به میلیثانیه (۶۶۰۰۰ => ۱د ۶ث)"
msgid "Duration in ms (66000 => 1m 6s)"
@@ -9342,7 +9353,7 @@ msgstr ""
msgid "No table columns"
msgstr "هیچ ستونی در جدول وجود ندارد."
-#, fuzzy, python-format
+#, fuzzy
msgid "No tasks yet"
msgstr "هنوز هیچ %s وجود ندارد"
@@ -9433,6 +9444,10 @@ msgstr "تعریف نشده است"
msgid "Not equal to (≠)"
msgstr "نابرابر با (≠)"
+#, fuzzy
+msgid "Not found"
+msgstr "نمودار یافت نشد"
+
msgid "Not in"
msgstr "نه در"
@@ -10490,6 +10505,12 @@ msgstr "منسوخ شده"
msgid "Proportional"
msgstr "تناسبی"
+msgid "Public and privately shared sheets"
+msgstr ""
+
+msgid "Publicly shared sheets only"
+msgstr ""
+
msgid "Published"
msgstr "منتشر شده"
@@ -10753,9 +10774,6 @@ msgstr "پیشفیلتر"
msgid "Registration date"
msgstr "تاریخ شروع"
-msgid "Registration hash"
-msgstr ""
-
msgid "Registration successful"
msgstr ""
@@ -11259,6 +11277,12 @@ msgstr "اس کیو ال"
msgid "SQL Lab"
msgstr "آزمایشگاه SQL"
+msgid ""
+"SQL Lab cannot authorise a statement that could not be fully parsed. "
+"Qualify tables explicitly and avoid dynamic SQL inside stored-procedure "
+"or vendor-specific calls."
+msgstr ""
+
#, fuzzy
msgid "SQL Lab queries"
msgstr "کوئریهای ذخیرهشده"
@@ -15512,6 +15536,9 @@ msgstr "یک مقدار وارد کنید"
msgid "Type is required"
msgstr "نوع الزامی است"
+msgid "Type of Google Sheets allowed"
+msgstr ""
+
msgid "Type of chart to display in sparkline"
msgstr ""
@@ -15670,6 +15697,12 @@ msgstr "عملیات را لغو کنید"
msgid "Undo?"
msgstr "بازگردانی؟"
+#, fuzzy
+msgid "Unexpected HTTP 401 response. Check your credentials."
+msgstr ""
+"خطای غیرمنتظرهای رخ داده است، لطفاً لاگهای خود را برای جزئیات بررسی "
+"کنید."
+
msgid "Unexpected error"
msgstr "خطای غیرمنتظره"
@@ -16621,6 +16654,10 @@ msgstr "آیا باید مقادیر حداقل و حداکثر محور X نم
msgid "Whether to display the min and max values of the Y-axis"
msgstr "آیا باید مقادیر حداقل و حداکثر محور Y نمایش داده شود؟"
+#, fuzzy
+msgid "Whether to display the numbered column"
+msgstr "آیا خط روند نمایش داده شود؟"
+
msgid "Whether to display the numerical values within the cells"
msgstr "آیا باید مقادیر عددی را درون سلولها نمایش داد؟"
@@ -18192,6 +18229,10 @@ msgstr "مقدار صعودی"
msgid "value descending"
msgstr "مقدار نزولی"
+#, fuzzy
+msgid "valuename"
+msgstr "نام جدول"
+
msgid "var"
msgstr "متغیر"
@@ -18240,25 +18281,8 @@ msgstr ""
msgid "zoom area"
msgstr "منطقهی زوم"
-#, python-brace-format
-msgid ""
-"{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;"
-"\n"
-"\n"
-"/** The classic emailregex.com regex for RFC 5322-compliant emails */\n"
-"export const rfc5322Email =\n"
-" "
-"/^(([^<>()[]\\.,;:s@\"]+(.[^<>()[]\\.,;:s@\"]+)*)|(\".+\"))@(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}])|(([a-zA-Z-0-9]+.)+[a-zA-Z]{2,}))$/;"
-"\n"
-"\n"
-"/** A loose regex that allows Unicode characters, enforces length limits,"
-" and that's about it. */\n"
-"export const unicodeEmail = /^[^s@\"]{1,64}@[^s@]{1,255}$/u;\n"
-"export const idnEmail = unicodeEmail;\n"
-"\n"
-"export const browserEmail: RegExp =\n"
-" /^[a-zA-Z0-9.!#$%&'*+/=?^_"
+msgid "© Layer attribution"
msgstr ""
-msgid "© Layer attribution"
+msgid "№"
msgstr ""
diff --git a/superset/translations/fi/LC_MESSAGES/messages.po b/superset/translations/fi/LC_MESSAGES/messages.po
index e8e6260966c..6fcc301abba 100644
--- a/superset/translations/fi/LC_MESSAGES/messages.po
+++ b/superset/translations/fi/LC_MESSAGES/messages.po
@@ -17,7 +17,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Superset VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2026-05-31 07:03-0700\n"
+"POT-Creation-Date: 2026-06-05 12:59+0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EM...@ADDRESS>\n"
"Language: fi\n"
@@ -26,7 +26,7 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.18.0\n"
+"Generated-By: Babel 2.17.0\n"
# Machine-translated via backfill_po.py (claude-sonnet-4-6) [refs: ca, cs, de,
# es, fa, fr, ja, lv, mi, pt_BR, ru, sk, sl, uk]
@@ -2023,6 +2023,12 @@ msgstr "Lisää uusi värimuotoilija"
msgid "Add new formatter"
msgstr "Lisää uusi muotoilija"
+# Machine-translated via backfill_po.py (claude-sonnet-4-6) [refs: ar, ca, cs,
+# de, es, fa, fr, ja, lv, mi, nl, ru, sk, sl, uk]
+#, fuzzy
+msgid "Add numbered column"
+msgstr " lisätäksesi laskettuja sarakkeita"
+
# Machine-translated via backfill_po.py (claude-sonnet-4-6) [refs: fr, ja, lv,
# ru, sk, uk]
#, fuzzy
@@ -3015,7 +3021,7 @@ msgstr "Käytettävissä olevien teemojen hakemisessa tapahtui virhe"
# Machine-translated via backfill_po.py (claude-sonnet-4-6) [refs: ar, ca, cs,
# de, es, fa, fr, it, ja, lv, mi, nl, pt, pt_BR, ru, sk, sl, uk, zh, zh_TW]
-#, fuzzy, python-format
+#, fuzzy
msgid "An error occurred while fetching semantic layers"
msgstr "Skeeman arvojen hakemisessa tapahtui virhe: %s"
@@ -3140,7 +3146,7 @@ msgstr "Lokien siistimisen aikana tapahtui virhe "
# Machine-translated via backfill_po.py (claude-sonnet-4-6) [refs: ar, ca, cs,
# de, es, fa, fr, it, ja, lv, mi, nl, pt, pt_BR, ru, sk, sl, uk, zh, zh_TW]
-#, fuzzy, python-format
+#, fuzzy
msgid "An error occurred while refreshing the configuration schema"
msgstr "Visualisoinnin renderöinnin aikana tapahtui virhe: %s"
@@ -4152,7 +4158,7 @@ msgstr "Pohjan korkeus"
# Machine-translated via backfill_po.py (claude-sonnet-4-6) [refs: ar, ca, cs,
# de, es, fa, fr, ja, lv, mi, nl, pl, ru, sk, sl, uk]
-#, fuzzy, python-format
+#, fuzzy
msgid "Base layer map style. Accepts a MapLibre-compatible style URL."
msgstr "Peruskerroksen karttatyyli. Katso Mapbox-dokumentaatio: %s"
@@ -7406,6 +7412,15 @@ msgstr "Mukautettu SQL"
msgid "Custom SQL ad-hoc metrics are not enabled for this dataset"
msgstr "Mukautetut SQL-ad-hoc-mittarit eivät ole käytössä tässä tietojoukossa"
+msgid "Custom SQL fields cannot be parsed as a single SQL statement."
+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]
+#, fuzzy
+msgid "Custom SQL fields cannot contain set operations."
+msgstr "Mukautetut SQL-kentät eivät voi sisältää alikyselyjä."
+
# 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]
#, fuzzy
@@ -9959,8 +9974,8 @@ msgstr "Kesto ms (100.40008 => 100ms 400µs 80ns)"
# Machine-translated via backfill_po.py (claude-sonnet-4-6) [refs: ca, cs, es,
# fr, ja, lv, mi, ru, sk, uk]
#, fuzzy
-msgid "Duration in ms (10500 => 0:10.5)"
-msgstr "Kesto ms (10500 => 0:10.5)"
+msgid "Duration in ms (10500 => 0:00:10.5)"
+msgstr "Kesto ms (10500 => 0:00:10.5)"
# 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]
@@ -16563,7 +16578,7 @@ msgstr "Ei taulukon sarakkeita"
# 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
+#, fuzzy
msgid "No tasks yet"
msgstr "Ei vielä %s"
@@ -16727,6 +16742,12 @@ msgstr "Ei määritelty"
msgid "Not equal to (≠)"
msgstr "Ei yhtä suuri kuin (≠)"
+# Machine-translated via backfill_po.py (claude-sonnet-4-6) [refs: ar, ca, cs,
+# de, es, fa, fr, ja, lv, mi, nl, pl, ru, sk, sl, tr, uk]
+#, fuzzy
+msgid "Not found"
+msgstr "Kaaviota ei löydy"
+
# Machine-translated via backfill_po.py (claude-sonnet-4-6) [refs: ar, ca, cs,
# de, es, fa, ja, lv, mi, nl, pl, pt_BR, ru, sk, sl, uk]
#, fuzzy
@@ -18637,6 +18658,12 @@ msgstr "Projektin tunnus"
msgid "Proportional"
msgstr "Suhteellinen"
+msgid "Public and privately shared sheets"
+msgstr ""
+
+msgid "Publicly shared sheets only"
+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, tr, uk, zh, zh_TW]
#, fuzzy
@@ -19129,12 +19156,6 @@ msgstr "Rekisteröidy"
msgid "Registration date"
msgstr "Rekisteröintipäivä"
-# Machine-translated via backfill_po.py (claude-sonnet-4-6) [refs: cs, fr, ja,
-# lv, ru, sk, uk]
-#, fuzzy
-msgid "Registration hash"
-msgstr "Rekisteröinti-hash"
-
# Machine-translated via backfill_po.py (claude-sonnet-4-6) [refs: cs, ja, ru,
# sk, uk]
#, fuzzy
@@ -20071,6 +20092,12 @@ msgstr "SQL"
msgid "SQL Lab"
msgstr "SQL Lab"
+msgid ""
+"SQL Lab cannot authorise a statement that could not be fully parsed. "
+"Qualify tables explicitly and avoid dynamic SQL inside stored-procedure "
+"or vendor-specific calls."
+msgstr ""
+
# Machine-translated via backfill_po.py (claude-sonnet-4-6) [refs: ca, cs, es,
# ja, lv, mi, ru, sk, uk]
#, fuzzy
@@ -27334,6 +27361,9 @@ msgstr "Kirjoita arvo"
msgid "Type is required"
msgstr "Tyyppi vaaditaan"
+msgid "Type of Google Sheets allowed"
+msgstr ""
+
# Machine-translated via backfill_po.py (claude-sonnet-4-6) [refs: cs, ja, lv,
# ru, sk, uk]
#, fuzzy
@@ -27597,6 +27627,12 @@ msgstr "Kumoa toiminto"
msgid "Undo?"
msgstr "Kumotaanko?"
+# 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, tr, uk, zh, zh_TW]
+#, fuzzy
+msgid "Unexpected HTTP 401 response. Check your credentials."
+msgstr "Tapahtui odottamaton virhe. Tarkista lokit lisätietojen saamiseksi"
+
# 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, tr, uk, zh, zh_TW]
#, fuzzy
@@ -29207,6 +29243,12 @@ msgstr "Näytetäänkö X-akselin minimi- ja maksimiarvot"
msgid "Whether to display the min and max values of the Y-axis"
msgstr "Näytetäänkö Y-akselin minimi- ja maksimiarvot"
+# 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
+msgid "Whether to display the numbered column"
+msgstr "Näytetäänkö trendiviiva"
+
# 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
@@ -32020,6 +32062,12 @@ msgstr "arvo nouseva"
msgid "value descending"
msgstr "arvo laskeva"
+# Machine-translated via backfill_po.py (claude-sonnet-4-6) [refs: ca, cs, es,
+# fr, ja, lv, mi, ru, sk, uk]
+#, fuzzy
+msgid "valuename"
+msgstr "Taulukon nimi"
+
# 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
@@ -32119,28 +32167,11 @@ msgstr "your-project-1234-a1"
msgid "zoom area"
msgstr "zoomausalue"
-#, python-brace-format
-msgid ""
-"{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;"
-"\n"
-"\n"
-"/** The classic emailregex.com regex for RFC 5322-compliant emails */\n"
-"export const rfc5322Email =\n"
-" "
-"/^(([^<>()[]\\.,;:s@\"]+(.[^<>()[]\\.,;:s@\"]+)*)|(\".+\"))@(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}])|(([a-zA-Z-0-9]+.)+[a-zA-Z]{2,}))$/;"
-"\n"
-"\n"
-"/** A loose regex that allows Unicode characters, enforces length limits,"
-" and that's about it. */\n"
-"export const unicodeEmail = /^[^s@\"]{1,64}@[^s@]{1,255}$/u;\n"
-"export const idnEmail = unicodeEmail;\n"
-"\n"
-"export const browserEmail: RegExp =\n"
-" /^[a-zA-Z0-9.!#$%&'*+/=?^_"
-msgstr ""
-
# Machine-translated via backfill_po.py (claude-sonnet-4-6) [refs: ca, cs, es,
# fr, ja, lv, mi, ru, sk, uk]
#, fuzzy
msgid "© Layer attribution"
msgstr "© Kerroksen attribuutio"
+
+msgid "№"
+msgstr ""
diff --git a/superset/translations/fr/LC_MESSAGES/messages.po b/superset/translations/fr/LC_MESSAGES/messages.po
index 99d3cfe3741..45ce8c44e7f 100644
--- a/superset/translations/fr/LC_MESSAGES/messages.po
+++ b/superset/translations/fr/LC_MESSAGES/messages.po
@@ -17,7 +17,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2026-05-31 07:03-0700\n"
+"POT-Creation-Date: 2026-06-05 12:59+0300\n"
"PO-Revision-Date: 2025-06-26 15:34+0200\n"
"Last-Translator: \n"
"Language: fr\n"
@@ -26,7 +26,7 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.18.0\n"
+"Generated-By: Babel 2.17.0\n"
msgid ""
"\n"
@@ -1240,6 +1240,10 @@ msgstr "Ajouter un nouveau formateur de couleur"
msgid "Add new formatter"
msgstr "Ajouter un nouveau formateur"
+#, fuzzy
+msgid "Add numbered column"
+msgstr " pour ajouter des colonnes calculées"
+
msgid "Add or edit display controls"
msgstr "Ajouter ou modifier les contrôles d'affichage"
@@ -1809,7 +1813,7 @@ msgstr "Une erreur s'est produite lors de l'extraction des valeurs du schéma :
msgid "An error occurred while fetching semantic layer types"
msgstr "Une erreur s'est produite lors de l'extraction des Thèmes "
-#, fuzzy, python-format
+#, fuzzy
msgid "An error occurred while fetching semantic layers"
msgstr "Une erreur s'est produite lors de l'extraction des valeurs du schéma : %s"
@@ -1885,7 +1889,7 @@ msgstr "Une erreur s'est produite lors de l'analyse de la clé."
msgid "An error occurred while pruning logs "
msgstr "Une erreur s'est produite lors de la suppression des journaux "
-#, fuzzy, python-format
+#, fuzzy
msgid "An error occurred while refreshing the configuration schema"
msgstr "Une erreur s'est produite durant le rendu de la visualisation : %s"
@@ -2452,7 +2456,7 @@ msgstr "Port de la base de données"
msgid "Base height"
msgstr "Hauteur de base"
-#, fuzzy, python-format
+#, fuzzy
msgid "Base layer map style. Accepts a MapLibre-compatible style URL."
msgstr "Style de la couche de base de la carte. Voir la documentation Mapbox : %s"
@@ -4245,6 +4249,13 @@ msgstr ""
"Les mesures SQL ponctuelles personnalisées ne sont pas activées pour cet "
"ensemble de données"
+msgid "Custom SQL fields cannot be parsed as a single SQL statement."
+msgstr ""
+
+#, fuzzy
+msgid "Custom SQL fields cannot contain set operations."
+msgstr "Les champs SQL personnalisés ne peuvent pas contenir de sous-requêtes."
+
msgid "Custom SQL fields cannot contain sub-queries."
msgstr "Les champs SQL personnalisés ne peuvent pas contenir de sous-requêtes."
@@ -5736,8 +5747,8 @@ msgstr "Durée en ms (1.40008 => 1ms 400µs 80ns)"
msgid "Duration in ms (100.40008 => 100ms 400µs 80ns)"
msgstr "Durée en ms (100.40008 => 100ms 400µs 80ns)"
-msgid "Duration in ms (10500 => 0:10.5)"
-msgstr "Durée en ms (66000 => 1m 6s)"
+msgid "Duration in ms (10500 => 0:00:10.5)"
+msgstr "Durée en ms (10500 => 0:00:10.5)"
msgid "Duration in ms (66000 => 1m 6s)"
msgstr "Durée en ms (66000 => 1m 6s)"
@@ -9503,7 +9514,7 @@ msgstr ""
msgid "No table columns"
msgstr "Pas de colonnes de tableau"
-#, fuzzy, python-format
+#, fuzzy
msgid "No tasks yet"
msgstr "Pas encore de %s"
@@ -9599,6 +9610,10 @@ msgstr "Indéfini"
msgid "Not equal to (≠)"
msgstr "Différent de (≠)"
+#, fuzzy
+msgid "Not found"
+msgstr "Graphique non trouvé"
+
#, fuzzy
msgid "Not in"
msgstr "Pas dans"
@@ -10708,6 +10723,12 @@ msgstr "Déclassé"
msgid "Proportional"
msgstr "Proportionnel"
+msgid "Public and privately shared sheets"
+msgstr ""
+
+msgid "Publicly shared sheets only"
+msgstr ""
+
msgid "Published"
msgstr "Publié"
@@ -10972,9 +10993,6 @@ msgstr "S'enregister"
msgid "Registration date"
msgstr "Source de l'annotation"
-msgid "Registration hash"
-msgstr "Hachage d'enregistrement"
-
#, fuzzy
msgid "Registration successful"
msgstr "Hachage d'enregistrement"
@@ -11517,6 +11535,12 @@ msgstr "SQL"
msgid "SQL Lab"
msgstr "SQL Lab"
+msgid ""
+"SQL Lab cannot authorise a statement that could not be fully parsed. "
+"Qualify tables explicitly and avoid dynamic SQL inside stored-procedure "
+"or vendor-specific calls."
+msgstr ""
+
#, fuzzy
msgid "SQL Lab queries"
msgstr "Requêtes enregistrées"
@@ -16003,6 +16027,9 @@ msgstr "Saisissez une valeur"
msgid "Type is required"
msgstr "Le type est requis"
+msgid "Type of Google Sheets allowed"
+msgstr ""
+
#, fuzzy
msgid "Type of chart to display in sparkline"
msgstr "Nombre de graphiques à afficher par ligne"
@@ -16173,6 +16200,12 @@ msgstr "Annuler l'action"
msgid "Undo?"
msgstr "Annuler?"
+#, fuzzy
+msgid "Unexpected HTTP 401 response. Check your credentials."
+msgstr ""
+"Une erreur inattendue s'est produite, veuillez consulter vos journaux "
+"pour plus de détails"
+
msgid "Unexpected error"
msgstr "Erreur inattendue"
@@ -17185,6 +17218,10 @@ msgstr "Affichage ou non des valeurs min et max de l’axe des absisses"
msgid "Whether to display the min and max values of the Y-axis"
msgstr "Affichage ou non des valeurs min et max de l’axe des ordonnées"
+#, fuzzy
+msgid "Whether to display the numbered column"
+msgstr "Affichage ou non de la ligne de tendance"
+
msgid "Whether to display the numerical values within the cells"
msgstr "Affichage ou non des valeurs numériques dans les cellules"
@@ -18821,6 +18858,10 @@ msgstr "valeurs croissantes"
msgid "value descending"
msgstr "valeurs décroissantes"
+#, fuzzy
+msgid "valuename"
+msgstr "Nom du tableau"
+
msgid "var"
msgstr "var"
@@ -18869,25 +18910,8 @@ msgstr ""
msgid "zoom area"
msgstr "zone de zoom"
-#, python-brace-format
-msgid ""
-"{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;"
-"\n"
-"\n"
-"/** The classic emailregex.com regex for RFC 5322-compliant emails */\n"
-"export const rfc5322Email =\n"
-" "
-"/^(([^<>()[]\\.,;:s@\"]+(.[^<>()[]\\.,;:s@\"]+)*)|(\".+\"))@(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}])|(([a-zA-Z-0-9]+.)+[a-zA-Z]{2,}))$/;"
-"\n"
-"\n"
-"/** A loose regex that allows Unicode characters, enforces length limits,"
-" and that's about it. */\n"
-"export const unicodeEmail = /^[^s@\"]{1,64}@[^s@]{1,255}$/u;\n"
-"export const idnEmail = unicodeEmail;\n"
-"\n"
-"export const browserEmail: RegExp =\n"
-" /^[a-zA-Z0-9.!#$%&'*+/=?^_"
-msgstr ""
-
msgid "© Layer attribution"
msgstr "© Attribution de la couche"
+
+msgid "№"
+msgstr ""
diff --git a/superset/translations/it/LC_MESSAGES/messages.po b/superset/translations/it/LC_MESSAGES/messages.po
index e948c866866..e28bf84d4ef 100644
--- a/superset/translations/it/LC_MESSAGES/messages.po
+++ b/superset/translations/it/LC_MESSAGES/messages.po
@@ -17,7 +17,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2026-05-31 07:03-0700\n"
+"POT-Creation-Date: 2026-06-05 12:59+0300\n"
"PO-Revision-Date: 2018-02-11 22:26+0200\n"
"Last-Translator: Raffaele Spangaro <ra...@raffaelespangaro.it>\n"
"Language: it\n"
@@ -26,7 +26,7 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.18.0\n"
+"Generated-By: Babel 2.17.0\n"
msgid ""
"\n"
@@ -1160,6 +1160,10 @@ msgstr ""
msgid "Add new formatter"
msgstr ""
+#, fuzzy
+msgid "Add numbered column"
+msgstr "Visualizza colonne"
+
#, fuzzy
msgid "Add or edit display controls"
msgstr "Aggiungi filtro"
@@ -1714,7 +1718,7 @@ msgstr "Errore nel rendering della visualizzazione: %s"
msgid "An error occurred while fetching semantic layer types"
msgstr "Errore nel recupero dei metadati della tabella"
-#, fuzzy, python-format
+#, fuzzy
msgid "An error occurred while fetching semantic layers"
msgstr "Errore nel rendering della visualizzazione: %s"
@@ -1787,7 +1791,7 @@ msgstr "Errore nel creare il datasource"
msgid "An error occurred while pruning logs "
msgstr "Errore nel rendering della visualizzazione: %s"
-#, fuzzy, python-format
+#, fuzzy
msgid "An error occurred while refreshing the configuration schema"
msgstr "Errore nel rendering della visualizzazione: %s"
@@ -4151,6 +4155,12 @@ msgstr ""
msgid "Custom SQL ad-hoc metrics are not enabled for this dataset"
msgstr ""
+msgid "Custom SQL fields cannot be parsed as a single SQL statement."
+msgstr ""
+
+msgid "Custom SQL fields cannot contain set operations."
+msgstr ""
+
msgid "Custom SQL fields cannot contain sub-queries."
msgstr ""
@@ -5576,7 +5586,7 @@ msgstr ""
msgid "Duration in ms (100.40008 => 100ms 400µs 80ns)"
msgstr ""
-msgid "Duration in ms (10500 => 0:10.5)"
+msgid "Duration in ms (10500 => 0:00:10.5)"
msgstr ""
msgid "Duration in ms (66000 => 1m 6s)"
@@ -9397,6 +9407,10 @@ msgstr "Modificato"
msgid "Not equal to (≠)"
msgstr ""
+#, fuzzy
+msgid "Not found"
+msgstr "Azione"
+
#, fuzzy
msgid "Not in"
msgstr "Azione"
@@ -10430,6 +10444,12 @@ msgstr "Creato il"
msgid "Proportional"
msgstr ""
+msgid "Public and privately shared sheets"
+msgstr ""
+
+msgid "Publicly shared sheets only"
+msgstr ""
+
msgid "Published"
msgstr ""
@@ -10707,9 +10727,6 @@ msgstr "Cerca / Filtra"
msgid "Registration date"
msgstr "Ultima Modifica"
-msgid "Registration hash"
-msgstr ""
-
msgid "Registration successful"
msgstr ""
@@ -11219,6 +11236,12 @@ msgstr ""
msgid "SQL Lab"
msgstr ""
+msgid ""
+"SQL Lab cannot authorise a statement that could not be fully parsed. "
+"Qualify tables explicitly and avoid dynamic SQL inside stored-procedure "
+"or vendor-specific calls."
+msgstr ""
+
#, fuzzy
msgid "SQL Lab queries"
msgstr "Query salvate"
@@ -15303,6 +15326,9 @@ msgstr "Valore del filtro"
msgid "Type is required"
msgstr ""
+msgid "Type of Google Sheets allowed"
+msgstr ""
+
msgid "Type of chart to display in sparkline"
msgstr ""
@@ -15447,6 +15473,9 @@ msgstr "Seleziona una colonna"
msgid "Undo?"
msgstr ""
+msgid "Unexpected HTTP 401 response. Check your credentials."
+msgstr ""
+
msgid "Unexpected error"
msgstr ""
@@ -16330,6 +16359,10 @@ msgstr ""
msgid "Whether to display the min and max values of the Y-axis"
msgstr ""
+#, fuzzy
+msgid "Whether to display the numbered column"
+msgstr "Seleziona una metrica da visualizzare"
+
msgid "Whether to display the numerical values within the cells"
msgstr ""
@@ -17895,6 +17928,10 @@ msgstr "Importa"
msgid "value descending"
msgstr "Importa"
+#, fuzzy
+msgid "valuename"
+msgstr "Database"
+
msgid "var"
msgstr ""
@@ -17945,25 +17982,8 @@ msgstr ""
msgid "zoom area"
msgstr ""
-#, python-brace-format
-msgid ""
-"{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;"
-"\n"
-"\n"
-"/** The classic emailregex.com regex for RFC 5322-compliant emails */\n"
-"export const rfc5322Email =\n"
-" "
-"/^(([^<>()[]\\.,;:s@\"]+(.[^<>()[]\\.,;:s@\"]+)*)|(\".+\"))@(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}])|(([a-zA-Z-0-9]+.)+[a-zA-Z]{2,}))$/;"
-"\n"
-"\n"
-"/** A loose regex that allows Unicode characters, enforces length limits,"
-" and that's about it. */\n"
-"export const unicodeEmail = /^[^s@\"]{1,64}@[^s@]{1,255}$/u;\n"
-"export const idnEmail = unicodeEmail;\n"
-"\n"
-"export const browserEmail: RegExp =\n"
-" /^[a-zA-Z0-9.!#$%&'*+/=?^_"
+msgid "© Layer attribution"
msgstr ""
-msgid "© Layer attribution"
+msgid "№"
msgstr ""
diff --git a/superset/translations/ja/LC_MESSAGES/messages.po b/superset/translations/ja/LC_MESSAGES/messages.po
index ed5d39d99d8..30eeb91dffd 100644
--- a/superset/translations/ja/LC_MESSAGES/messages.po
+++ b/superset/translations/ja/LC_MESSAGES/messages.po
@@ -17,7 +17,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2026-05-31 07:03-0700\n"
+"POT-Creation-Date: 2026-06-05 12:59+0300\n"
"PO-Revision-Date: 2024-05-14 13:30+0900\n"
"Last-Translator: Yuri Umezaki <bu...@gmail.com>\n"
"Language: ja\n"
@@ -26,7 +26,7 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.18.0\n"
+"Generated-By: Babel 2.17.0\n"
msgid ""
"\n"
@@ -1153,6 +1153,10 @@ msgstr "新しいカラー形式を追加"
msgid "Add new formatter"
msgstr "新しい形式を追加"
+#, fuzzy
+msgid "Add numbered column"
+msgstr "計算列を追加する"
+
msgid "Add or edit display controls"
msgstr "表示コントロールを追加または編集"
@@ -1667,7 +1671,7 @@ msgstr "スキーマの値を取得中にエラーが発生しました: %s"
msgid "An error occurred while fetching semantic layer types"
msgstr "利用可能なテーマの取得中にエラーが発生しました"
-#, fuzzy, python-format
+#, fuzzy
msgid "An error occurred while fetching semantic layers"
msgstr "スキーマの値を取得中にエラーが発生しました: %s"
@@ -1735,7 +1739,7 @@ msgstr "キーの解析中にエラーが発生しました。"
msgid "An error occurred while pruning logs "
msgstr "ログの削除(プルーニング)中にエラーが発生しました "
-#, fuzzy, python-format
+#, fuzzy
msgid "An error occurred while refreshing the configuration schema"
msgstr "視覚化(ビジュアライゼーション)のレンダリング中にエラーが発生しました: %s"
@@ -2256,7 +2260,7 @@ msgstr "基本の指数"
msgid "Base height"
msgstr "基本の高さ"
-#, fuzzy, python-format
+#, fuzzy
msgid "Base layer map style. Accepts a MapLibre-compatible style URL."
msgstr "ベースレイヤーのマップスタイル。Mapboxのドキュメントを参照: %s"
@@ -3916,6 +3920,13 @@ msgstr "カスタムSQL"
msgid "Custom SQL ad-hoc metrics are not enabled for this dataset"
msgstr "このデータセットではカスタムSQLアドホックメトリックが有効になっていません"
+msgid "Custom SQL fields cannot be parsed as a single SQL statement."
+msgstr ""
+
+#, fuzzy
+msgid "Custom SQL fields cannot contain set operations."
+msgstr "カスタムSQLフィールドにサブクエリを含めることはできません。"
+
msgid "Custom SQL fields cannot contain sub-queries."
msgstr "カスタムSQLフィールドにサブクエリを含めることはできません。"
@@ -5235,8 +5246,8 @@ msgstr "所要時間(ミリ秒) (1.40008 => 1ms 400µs 80ns)"
msgid "Duration in ms (100.40008 => 100ms 400µs 80ns)"
msgstr "所要時間(ミリ秒) (100.40008 => 100ms 400µs 80ns)"
-msgid "Duration in ms (10500 => 0:10.5)"
-msgstr "所要時間(ミリ秒) (10500 => 0:10.5)"
+msgid "Duration in ms (10500 => 0:00:10.5)"
+msgstr "所要時間(ミリ秒) (10500 => 0:00:10.5)"
msgid "Duration in ms (66000 => 1m 6s)"
msgstr "所要時間(ミリ秒) (66000 => 1分6秒)"
@@ -8661,7 +8672,7 @@ msgstr "該当する列が見つかりません。メトリックでフィルタ
msgid "No table columns"
msgstr "テーブル列がありません"
-#, fuzzy, python-format
+#, fuzzy
msgid "No tasks yet"
msgstr "%s はまだありません"
@@ -8746,6 +8757,10 @@ msgstr "未定義"
msgid "Not equal to (≠)"
msgstr "等しくない (≠)"
+#, fuzzy
+msgid "Not found"
+msgstr "チャートが見つかりません"
+
msgid "Not in"
msgstr "次を含まない (Not in)"
@@ -9716,6 +9731,12 @@ msgstr "プロジェクトID"
msgid "Proportional"
msgstr "比例"
+msgid "Public and privately shared sheets"
+msgstr ""
+
+msgid "Publicly shared sheets only"
+msgstr ""
+
msgid "Published"
msgstr "公開済み"
@@ -9964,9 +9985,6 @@ msgstr "登録"
msgid "Registration date"
msgstr "登録日"
-msgid "Registration hash"
-msgstr "登録ハッシュ"
-
msgid "Registration successful"
msgstr "登録が完了しました"
@@ -10447,6 +10465,12 @@ msgstr "SQL"
msgid "SQL Lab"
msgstr "SQL Lab"
+msgid ""
+"SQL Lab cannot authorise a statement that could not be fully parsed. "
+"Qualify tables explicitly and avoid dynamic SQL inside stored-procedure "
+"or vendor-specific calls."
+msgstr ""
+
msgid "SQL Lab queries"
msgstr "SQL Lab クエリ"
@@ -14310,6 +14334,9 @@ msgstr "値を入力してください"
msgid "Type is required"
msgstr "種類は必須です"
+msgid "Type of Google Sheets allowed"
+msgstr ""
+
msgid "Type of chart to display in sparkline"
msgstr "スパークラインに表示するチャートの種類"
@@ -14458,6 +14485,10 @@ msgstr "操作を元に戻す"
msgid "Undo?"
msgstr "元に戻しますか?"
+#, fuzzy
+msgid "Unexpected HTTP 401 response. Check your credentials."
+msgstr "予期しないエラーが発生しました。詳細についてはログを確認してください"
+
msgid "Unexpected error"
msgstr "予期しないエラー"
@@ -15299,6 +15330,10 @@ msgstr "X軸の最小値と最大値を表示するかどうか"
msgid "Whether to display the min and max values of the Y-axis"
msgstr "Y軸の最小値と最大値を表示するかどうか"
+#, fuzzy
+msgid "Whether to display the numbered column"
+msgstr "トレンドラインを表示するかどうか"
+
msgid "Whether to display the numerical values within the cells"
msgstr "セル内の数値を表示するかどうか"
@@ -16782,6 +16817,10 @@ msgstr "値の昇順"
msgid "value descending"
msgstr "値の降順"
+#, fuzzy
+msgid "valuename"
+msgstr "テーブル名"
+
msgid "var"
msgstr "分散"
@@ -16831,25 +16870,8 @@ msgstr "your-project-1234-a1"
msgid "zoom area"
msgstr "ズームエリア"
-#, python-brace-format
-msgid ""
-"{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;"
-"\n"
-"\n"
-"/** The classic emailregex.com regex for RFC 5322-compliant emails */\n"
-"export const rfc5322Email =\n"
-" "
-"/^(([^<>()[]\\.,;:s@\"]+(.[^<>()[]\\.,;:s@\"]+)*)|(\".+\"))@(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}])|(([a-zA-Z-0-9]+.)+[a-zA-Z]{2,}))$/;"
-"\n"
-"\n"
-"/** A loose regex that allows Unicode characters, enforces length limits,"
-" and that's about it. */\n"
-"export const unicodeEmail = /^[^s@\"]{1,64}@[^s@]{1,255}$/u;\n"
-"export const idnEmail = unicodeEmail;\n"
-"\n"
-"export const browserEmail: RegExp =\n"
-" /^[a-zA-Z0-9.!#$%&'*+/=?^_"
-msgstr ""
-
msgid "© Layer attribution"
msgstr "© レイヤー帰属情報"
+
+msgid "№"
+msgstr ""
diff --git a/superset/translations/ko/LC_MESSAGES/messages.po b/superset/translations/ko/LC_MESSAGES/messages.po
index 79a21a01558..042fef4a03e 100644
--- a/superset/translations/ko/LC_MESSAGES/messages.po
+++ b/superset/translations/ko/LC_MESSAGES/messages.po
@@ -17,7 +17,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2026-05-31 07:03-0700\n"
+"POT-Creation-Date: 2026-06-05 12:59+0300\n"
"PO-Revision-Date: 2019-02-02 22:28+0900\n"
"Last-Translator: \n"
"Language: ko\n"
@@ -26,7 +26,7 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.18.0\n"
+"Generated-By: Babel 2.17.0\n"
msgid ""
"\n"
@@ -1155,6 +1155,10 @@ msgstr ""
msgid "Add new formatter"
msgstr ""
+#, fuzzy
+msgid "Add numbered column"
+msgstr "컬럼 목록"
+
#, fuzzy
msgid "Add or edit display controls"
msgstr "테이블 추가"
@@ -1720,7 +1724,7 @@ msgid ""
"administrator."
msgstr ""
-#, fuzzy, python-format
+#, fuzzy
msgid "An error occurred while fetching the configuration schema"
msgstr "데이터 베이스 목록을 가져오는 도중 에러가 발생하였습니다."
@@ -1774,7 +1778,7 @@ msgstr "데이터 베이스 목록을 가져오는 도중 에러가 발생하였
msgid "An error occurred while pruning logs "
msgstr ""
-#, fuzzy, python-format
+#, fuzzy
msgid "An error occurred while refreshing the configuration schema"
msgstr "데이터 베이스 목록을 가져오는 도중 에러가 발생하였습니다."
@@ -4131,6 +4135,12 @@ msgstr ""
msgid "Custom SQL ad-hoc metrics are not enabled for this dataset"
msgstr ""
+msgid "Custom SQL fields cannot be parsed as a single SQL statement."
+msgstr ""
+
+msgid "Custom SQL fields cannot contain set operations."
+msgstr ""
+
msgid "Custom SQL fields cannot contain sub-queries."
msgstr ""
@@ -5538,7 +5548,7 @@ msgstr ""
msgid "Duration in ms (100.40008 => 100ms 400µs 80ns)"
msgstr ""
-msgid "Duration in ms (10500 => 0:10.5)"
+msgid "Duration in ms (10500 => 0:00:10.5)"
msgstr ""
msgid "Duration in ms (66000 => 1m 6s)"
@@ -9309,6 +9319,10 @@ msgstr "수정됨"
msgid "Not equal to (≠)"
msgstr ""
+#, fuzzy
+msgid "Not found"
+msgstr "데이터베이스를 찾을 수 없습니다."
+
#, fuzzy
msgid "Not in"
msgstr "주석"
@@ -10333,6 +10347,12 @@ msgstr "생성자"
msgid "Proportional"
msgstr ""
+msgid "Public and privately shared sheets"
+msgstr ""
+
+msgid "Publicly shared sheets only"
+msgstr ""
+
msgid "Published"
msgstr ""
@@ -10611,9 +10631,6 @@ msgstr "필터"
msgid "Registration date"
msgstr "시작 시간"
-msgid "Registration hash"
-msgstr ""
-
msgid "Registration successful"
msgstr ""
@@ -11115,6 +11132,12 @@ msgstr ""
msgid "SQL Lab"
msgstr "SQL Lab"
+msgid ""
+"SQL Lab cannot authorise a statement that could not be fully parsed. "
+"Qualify tables explicitly and avoid dynamic SQL inside stored-procedure "
+"or vendor-specific calls."
+msgstr ""
+
#, fuzzy
msgid "SQL Lab queries"
msgstr "저장된 Query"
@@ -15180,6 +15203,9 @@ msgstr "원본 값"
msgid "Type is required"
msgstr ""
+msgid "Type of Google Sheets allowed"
+msgstr ""
+
msgid "Type of chart to display in sparkline"
msgstr ""
@@ -15321,6 +15347,9 @@ msgstr "주석"
msgid "Undo?"
msgstr ""
+msgid "Unexpected HTTP 401 response. Check your credentials."
+msgstr ""
+
msgid "Unexpected error"
msgstr ""
@@ -16199,6 +16228,9 @@ msgstr ""
msgid "Whether to display the min and max values of the Y-axis"
msgstr ""
+msgid "Whether to display the numbered column"
+msgstr ""
+
msgid "Whether to display the numerical values within the cells"
msgstr ""
@@ -17730,6 +17762,10 @@ msgstr ""
msgid "value descending"
msgstr ""
+#, fuzzy
+msgid "valuename"
+msgstr "테이블 명"
+
msgid "var"
msgstr ""
@@ -17780,25 +17816,8 @@ msgstr ""
msgid "zoom area"
msgstr ""
-#, python-brace-format
-msgid ""
-"{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;"
-"\n"
-"\n"
-"/** The classic emailregex.com regex for RFC 5322-compliant emails */\n"
-"export const rfc5322Email =\n"
-" "
-"/^(([^<>()[]\\.,;:s@\"]+(.[^<>()[]\\.,;:s@\"]+)*)|(\".+\"))@(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}])|(([a-zA-Z-0-9]+.)+[a-zA-Z]{2,}))$/;"
-"\n"
-"\n"
-"/** A loose regex that allows Unicode characters, enforces length limits,"
-" and that's about it. */\n"
-"export const unicodeEmail = /^[^s@\"]{1,64}@[^s@]{1,255}$/u;\n"
-"export const idnEmail = unicodeEmail;\n"
-"\n"
-"export const browserEmail: RegExp =\n"
-" /^[a-zA-Z0-9.!#$%&'*+/=?^_"
+msgid "© Layer attribution"
msgstr ""
-msgid "© Layer attribution"
+msgid "№"
msgstr ""
diff --git a/superset/translations/lv/LC_MESSAGES/messages.po b/superset/translations/lv/LC_MESSAGES/messages.po
index 4d406cc2257..8e85229d07d 100644
--- a/superset/translations/lv/LC_MESSAGES/messages.po
+++ b/superset/translations/lv/LC_MESSAGES/messages.po
@@ -21,7 +21,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Superset VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2026-05-31 07:03-0700\n"
+"POT-Creation-Date: 2026-06-05 12:59+0300\n"
"PO-Revision-Date: 2026-03-27 14:01+0200\n"
"Last-Translator: FULL NAME <EM...@ADDRESS>\n"
"Language: lv\n"
@@ -31,7 +31,7 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.18.0\n"
+"Generated-By: Babel 2.17.0\n"
msgid ""
"\n"
@@ -1248,6 +1248,10 @@ msgstr "Pievienot jaunu krāsu formatētāju"
msgid "Add new formatter"
msgstr "Pievienot jaunu formatētāju"
+#, fuzzy
+msgid "Add numbered column"
+msgstr " lai pievienotu aprēķinātās kolonnas"
+
msgid "Add or edit display controls"
msgstr "Pievienot vai rediģēt displeja vadības elementus"
@@ -1794,7 +1798,7 @@ msgstr "Radās kļūda, iegūstot shēmu vērtības: %s"
msgid "An error occurred while fetching semantic layer types"
msgstr "Radās kļūda, lejupielādējot pieejamos motīvus"
-#, fuzzy, python-format
+#, fuzzy
msgid "An error occurred while fetching semantic layers"
msgstr "Radās kļūda, iegūstot shēmu vērtības: %s"
@@ -1864,7 +1868,7 @@ msgstr "Radās kļūda, apstrādājot atslēgu."
msgid "An error occurred while pruning logs "
msgstr "Radās kļūda, tīrot žurnālus "
-#, fuzzy, python-format
+#, fuzzy
msgid "An error occurred while refreshing the configuration schema"
msgstr "Radās kļūda, attēlojot vizualizāciju: %s"
@@ -2417,7 +2421,7 @@ msgstr "Bāzes eksponents"
msgid "Base height"
msgstr "Bāzes augstums"
-#, fuzzy, python-format
+#, fuzzy
msgid "Base layer map style. Accepts a MapLibre-compatible style URL."
msgstr "Pamata slāņa kartes stils. Skatīt Mapbox dokumentāciju: %s"
@@ -4170,6 +4174,13 @@ msgstr "Pielāgots SQL"
msgid "Custom SQL ad-hoc metrics are not enabled for this dataset"
msgstr "Pielāgoti SQL ad-hoc rādītāji nav iespējoti šai datu kopai"
+msgid "Custom SQL fields cannot be parsed as a single SQL statement."
+msgstr ""
+
+#, fuzzy
+msgid "Custom SQL fields cannot contain set operations."
+msgstr "Pielāgotie SQL lauki nevar saturēt apakšvaicājumus."
+
msgid "Custom SQL fields cannot contain sub-queries."
msgstr "Pielāgotie SQL lauki nevar saturēt apakšvaicājumus."
@@ -5611,8 +5622,8 @@ msgstr "Ilgums ms (1.40008 => 1ms 400µs 80ns)"
msgid "Duration in ms (100.40008 => 100ms 400µs 80ns)"
msgstr "Ilgums ms (100.40008 => 100ms 400µs 80ns)"
-msgid "Duration in ms (10500 => 0:10.5)"
-msgstr "Ilgums ms (10500 => 0:10.5)"
+msgid "Duration in ms (10500 => 0:00:10.5)"
+msgstr "Ilgums ms (10500 => 0:00:10.5)"
msgid "Duration in ms (66000 => 1m 6s)"
msgstr "Ilgums ms (66000 => 1m 6s)"
@@ -9148,7 +9159,7 @@ msgstr ""
msgid "No table columns"
msgstr "Nav tabulas kolonnu"
-#, fuzzy, python-format
+#, fuzzy
msgid "No tasks yet"
msgstr "Pagaidām nav %s"
@@ -9235,6 +9246,10 @@ msgstr "Nav definēts"
msgid "Not equal to (≠)"
msgstr "Nav vienāds ar (≠)"
+#, fuzzy
+msgid "Not found"
+msgstr "Diagramma nav atrasta"
+
msgid "Not in"
msgstr "Neietilpst"
@@ -10270,6 +10285,12 @@ msgstr "Projekta ID"
msgid "Proportional"
msgstr "Proporcionāls"
+msgid "Public and privately shared sheets"
+msgstr ""
+
+msgid "Publicly shared sheets only"
+msgstr ""
+
msgid "Published"
msgstr "Publicēts"
@@ -10520,9 +10541,6 @@ msgstr "Reģistrēties"
msgid "Registration date"
msgstr "Reģistrācijas datums"
-msgid "Registration hash"
-msgstr "Reģistrācijas hash"
-
#, fuzzy
msgid "Registration successful"
msgstr "Reģistrācija veiksmīga"
@@ -11020,6 +11038,12 @@ msgstr "SQL"
msgid "SQL Lab"
msgstr "SQL laboratorija"
+msgid ""
+"SQL Lab cannot authorise a statement that could not be fully parsed. "
+"Qualify tables explicitly and avoid dynamic SQL inside stored-procedure "
+"or vendor-specific calls."
+msgstr ""
+
msgid "SQL Lab queries"
msgstr "SQL laboratorijas vaicājumi"
@@ -15189,6 +15213,9 @@ msgstr "Ierakstiet vērtību"
msgid "Type is required"
msgstr "Veids ir obligāts"
+msgid "Type of Google Sheets allowed"
+msgstr ""
+
msgid "Type of chart to display in sparkline"
msgstr "Diagrammas veids, kas jāparāda sparkline"
@@ -15352,6 +15379,10 @@ msgstr "Atsaukt darbību"
msgid "Undo?"
msgstr "Atsaukt?"
+#, fuzzy
+msgid "Unexpected HTTP 401 response. Check your credentials."
+msgstr "Radās neparedzēta kļūda, lūdzu pārbaudiet žurnālus detaļām"
+
msgid "Unexpected error"
msgstr "Neparedzēta kļūda"
@@ -16291,6 +16322,10 @@ msgstr "Vai rādīt X ass minimālās un maksimālās vērtības"
msgid "Whether to display the min and max values of the Y-axis"
msgstr "Vai rādīt Y ass minimālās un maksimālās vērtības"
+#, fuzzy
+msgid "Whether to display the numbered column"
+msgstr "Vai rādīt tendences līniju"
+
msgid "Whether to display the numerical values within the cells"
msgstr "Vai rādīt skaitliskās vērtības šūnās"
@@ -17826,6 +17861,10 @@ msgstr "vērtība augošā secībā"
msgid "value descending"
msgstr "vērtība dilstošā secībā"
+#, fuzzy
+msgid "valuename"
+msgstr "Tabulas nosaukums"
+
msgid "var"
msgstr "dispersija"
@@ -17874,25 +17913,8 @@ msgstr "jūsu-projekts-1234-a1"
msgid "zoom area"
msgstr "tālummaiņas zona"
-#, python-brace-format
-msgid ""
-"{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;"
-"\n"
-"\n"
-"/** The classic emailregex.com regex for RFC 5322-compliant emails */\n"
-"export const rfc5322Email =\n"
-" "
-"/^(([^<>()[]\\.,;:s@\"]+(.[^<>()[]\\.,;:s@\"]+)*)|(\".+\"))@(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}])|(([a-zA-Z-0-9]+.)+[a-zA-Z]{2,}))$/;"
-"\n"
-"\n"
-"/** A loose regex that allows Unicode characters, enforces length limits,"
-" and that's about it. */\n"
-"export const unicodeEmail = /^[^s@\"]{1,64}@[^s@]{1,255}$/u;\n"
-"export const idnEmail = unicodeEmail;\n"
-"\n"
-"export const browserEmail: RegExp =\n"
-" /^[a-zA-Z0-9.!#$%&'*+/=?^_"
-msgstr ""
-
msgid "© Layer attribution"
msgstr "© Slāņa attiecinājums"
+
+msgid "№"
+msgstr ""
diff --git a/superset/translations/messages.pot b/superset/translations/messages.pot
index 087b4d91bc3..dab26836c67 100644
--- a/superset/translations/messages.pot
+++ b/superset/translations/messages.pot
@@ -25,14 +25,14 @@ msgid ""
msgstr ""
"Project-Id-Version: Superset VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2026-05-31 07:03-0700\n"
+"POT-Creation-Date: 2026-06-05 12:59+0300\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"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.18.0\n"
+"Generated-By: Babel 2.17.0\n"
msgid ""
"\n"
@@ -1110,6 +1110,9 @@ msgstr ""
msgid "Add new formatter"
msgstr ""
+msgid "Add numbered column"
+msgstr ""
+
msgid "Add or edit display controls"
msgstr ""
@@ -3834,6 +3837,12 @@ msgstr ""
msgid "Custom SQL ad-hoc metrics are not enabled for this dataset"
msgstr ""
+msgid "Custom SQL fields cannot be parsed as a single SQL statement."
+msgstr ""
+
+msgid "Custom SQL fields cannot contain set operations."
+msgstr ""
+
msgid "Custom SQL fields cannot contain sub-queries."
msgstr ""
@@ -5144,7 +5153,7 @@ msgstr ""
msgid "Duration in ms (100.40008 => 100ms 400µs 80ns)"
msgstr ""
-msgid "Duration in ms (10500 => 0:10.5)"
+msgid "Duration in ms (10500 => 0:00:10.5)"
msgstr ""
msgid "Duration in ms (66000 => 1m 6s)"
@@ -8584,6 +8593,9 @@ msgstr ""
msgid "Not equal to (≠)"
msgstr ""
+msgid "Not found"
+msgstr ""
+
msgid "Not in"
msgstr ""
@@ -9542,6 +9554,12 @@ msgstr ""
msgid "Proportional"
msgstr ""
+msgid "Public and privately shared sheets"
+msgstr ""
+
+msgid "Publicly shared sheets only"
+msgstr ""
+
msgid "Published"
msgstr ""
@@ -9786,9 +9804,6 @@ msgstr ""
msgid "Registration date"
msgstr ""
-msgid "Registration hash"
-msgstr ""
-
msgid "Registration successful"
msgstr ""
@@ -10256,6 +10271,12 @@ msgstr ""
msgid "SQL Lab"
msgstr ""
+msgid ""
+"SQL Lab cannot authorise a statement that could not be fully parsed. "
+"Qualify tables explicitly and avoid dynamic SQL inside stored-procedure "
+"or vendor-specific calls."
+msgstr ""
+
msgid "SQL Lab queries"
msgstr ""
@@ -13993,6 +14014,9 @@ msgstr ""
msgid "Type is required"
msgstr ""
+msgid "Type of Google Sheets allowed"
+msgstr ""
+
msgid "Type of chart to display in sparkline"
msgstr ""
@@ -14129,6 +14153,9 @@ msgstr ""
msgid "Undo?"
msgstr ""
+msgid "Unexpected HTTP 401 response. Check your credentials."
+msgstr ""
+
msgid "Unexpected error"
msgstr ""
@@ -14959,6 +14986,9 @@ msgstr ""
msgid "Whether to display the min and max values of the Y-axis"
msgstr ""
+msgid "Whether to display the numbered column"
+msgstr ""
+
msgid "Whether to display the numerical values within the cells"
msgstr ""
@@ -16388,6 +16418,9 @@ msgstr ""
msgid "value descending"
msgstr ""
+msgid "valuename"
+msgstr ""
+
msgid "var"
msgstr ""
@@ -16436,25 +16469,8 @@ msgstr ""
msgid "zoom area"
msgstr ""
-#, python-brace-format
-msgid ""
-"{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;"
-"\n"
-"\n"
-"/** The classic emailregex.com regex for RFC 5322-compliant emails */\n"
-"export const rfc5322Email =\n"
-" "
-"/^(([^<>()[]\\.,;:s@\"]+(.[^<>()[]\\.,;:s@\"]+)*)|(\".+\"))@(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}])|(([a-zA-Z-0-9]+.)+[a-zA-Z]{2,}))$/;"
-"\n"
-"\n"
-"/** A loose regex that allows Unicode characters, enforces length limits,"
-" and that's about it. */\n"
-"export const unicodeEmail = /^[^s@\"]{1,64}@[^s@]{1,255}$/u;\n"
-"export const idnEmail = unicodeEmail;\n"
-"\n"
-"export const browserEmail: RegExp =\n"
-" /^[a-zA-Z0-9.!#$%&'*+/=?^_"
+msgid "© Layer attribution"
msgstr ""
-msgid "© Layer attribution"
+msgid "№"
msgstr ""
diff --git a/superset/translations/mi/LC_MESSAGES/messages.po b/superset/translations/mi/LC_MESSAGES/messages.po
index 3c5598a963c..974bceee95f 100644
--- a/superset/translations/mi/LC_MESSAGES/messages.po
+++ b/superset/translations/mi/LC_MESSAGES/messages.po
@@ -21,7 +21,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Superset VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2026-05-31 07:03-0700\n"
+"POT-Creation-Date: 2026-06-05 12:59+0300\n"
"PO-Revision-Date: 2026-01-25 16:09+1300\n"
"Last-Translator: karo.co.nz\n"
"Language: mi\n"
@@ -30,7 +30,7 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.18.0\n"
+"Generated-By: Babel 2.17.0\n"
msgid ""
"\n"
@@ -1219,6 +1219,10 @@ msgstr "Tāpiri kaihōputu tae hou"
msgid "Add new formatter"
msgstr "Tāpiri kaihōputu hou"
+#, fuzzy
+msgid "Add numbered column"
+msgstr " hei tāpiri i ngā tīwae tatau"
+
#, fuzzy
msgid "Add or edit display controls"
msgstr "Tāpiri, whakatika rānei i ngā tātari"
@@ -1782,7 +1786,7 @@ msgstr "I puta he hapa i te tikitanga o ngā uara hanga: %s"
msgid "An error occurred while fetching semantic layer types"
msgstr "I puta he hapa i te tikitanga o ngā tauira CSS wātea"
-#, fuzzy, python-format
+#, fuzzy
msgid "An error occurred while fetching semantic layers"
msgstr "I puta he hapa i te tikitanga o ngā uara hanga: %s"
@@ -1857,7 +1861,7 @@ msgstr "I puta he hapa i te poroporo o te kī."
msgid "An error occurred while pruning logs "
msgstr "I puta he hapa i te puretanga o ngā rārangi "
-#, fuzzy, python-format
+#, fuzzy
msgid "An error occurred while refreshing the configuration schema"
msgstr "I puta he hapa i te whakaatutanga o te whakakitenga: %s"
@@ -2408,7 +2412,7 @@ msgstr "Pūmahi pūtake"
msgid "Base height"
msgstr "Teitei pūtake"
-#, fuzzy, python-format
+#, fuzzy
msgid "Base layer map style. Accepts a MapLibre-compatible style URL."
msgstr "Kāhua papa pūtake. Tirohia te tuhinga a Mapbox: %s"
@@ -4186,6 +4190,13 @@ msgstr "SQL Ritenga"
msgid "Custom SQL ad-hoc metrics are not enabled for this dataset"
msgstr "Kāore i whakahohengia ngā ine ad-hoc SQL Ritenga mō tēnei rārangi raraunga"
+msgid "Custom SQL fields cannot be parsed as a single SQL statement."
+msgstr ""
+
+#, fuzzy
+msgid "Custom SQL fields cannot contain set operations."
+msgstr "Kāore e taea e ngā āpure SQL Ritenga te whai i ngā pātai-iti."
+
msgid "Custom SQL fields cannot contain sub-queries."
msgstr "Kāore e taea e ngā āpure SQL Ritenga te whai i ngā pātai-iti."
@@ -5649,8 +5660,8 @@ msgstr "Roa i ngā ms (1.40008 => 1ms 400µs 80ns)"
msgid "Duration in ms (100.40008 => 100ms 400µs 80ns)"
msgstr "Roa i ngā ms (100.40008 => 100ms 400µs 80ns)"
-msgid "Duration in ms (10500 => 0:10.5)"
-msgstr "Roa i ngā ms (10500 => 0:10.5)"
+msgid "Duration in ms (10500 => 0:00:10.5)"
+msgstr "Roa i ngā ms (10500 => 0:00:10.5)"
msgid "Duration in ms (66000 => 1m 6s)"
msgstr "Roa i ngā ms (66000 => 1m 6s)"
@@ -9295,7 +9306,7 @@ msgstr ""
msgid "No table columns"
msgstr "Kāore he tīwae ripanga"
-#, fuzzy, python-format
+#, fuzzy
msgid "No tasks yet"
msgstr "Kāore anō he %s"
@@ -9385,6 +9396,10 @@ msgstr "Kāore i tautuhia"
msgid "Not equal to (≠)"
msgstr "Kāore e ōrite ki (≠)"
+#, fuzzy
+msgid "Not found"
+msgstr "Kāore i kitea te kauwhata"
+
msgid "Not in"
msgstr "Kāore i roto i"
@@ -10441,6 +10456,12 @@ msgstr "ID Kaupapa"
msgid "Proportional"
msgstr "Tauōrite"
+msgid "Public and privately shared sheets"
+msgstr ""
+
+msgid "Publicly shared sheets only"
+msgstr ""
+
msgid "Published"
msgstr "Kua Whakaputaina"
@@ -10703,9 +10724,6 @@ msgstr "Tātari-i-mua"
msgid "Registration date"
msgstr "Rā tīmata"
-msgid "Registration hash"
-msgstr ""
-
msgid "Registration successful"
msgstr ""
@@ -11220,6 +11238,12 @@ msgstr "SQL"
msgid "SQL Lab"
msgstr "SQL Lab"
+msgid ""
+"SQL Lab cannot authorise a statement that could not be fully parsed. "
+"Qualify tables explicitly and avoid dynamic SQL inside stored-procedure "
+"or vendor-specific calls."
+msgstr ""
+
msgid "SQL Lab queries"
msgstr "Pātai SQL Lab"
@@ -15480,6 +15504,9 @@ msgstr "Pato tētahi uara"
msgid "Type is required"
msgstr "E hiahiatia ana te momo"
+msgid "Type of Google Sheets allowed"
+msgstr ""
+
msgid "Type of chart to display in sparkline"
msgstr ""
@@ -15641,6 +15668,10 @@ msgstr "Wetekina te mahi"
msgid "Undo?"
msgstr "Wete?"
+#, fuzzy
+msgid "Unexpected HTTP 401 response. Check your credentials."
+msgstr "I puta he hapa ohorere, tēnā tirohia ō rārangi mō ngā taipitopito"
+
msgid "Unexpected error"
msgstr "Hapa ohorere"
@@ -16620,6 +16651,10 @@ msgstr "Mēnā ka whakaatu i ngā uara iti me ngā uara rahi o te tukutuku-X"
msgid "Whether to display the min and max values of the Y-axis"
msgstr "Mēnā ka whakaatu i ngā uara iti me ngā uara rahi o te tukutuku-Y"
+#, fuzzy
+msgid "Whether to display the numbered column"
+msgstr "Mēnā ka whakaatu i te rārangi ia"
+
msgid "Whether to display the numerical values within the cells"
msgstr "Mēnā ka whakaatu i ngā uara tau i roto i ngā pūtau"
@@ -18185,6 +18220,10 @@ msgstr "uara piki"
msgid "value descending"
msgstr "uara heke"
+#, fuzzy
+msgid "valuename"
+msgstr "Ingoa ripanga"
+
msgid "var"
msgstr "var"
@@ -18233,25 +18272,8 @@ msgstr ""
msgid "zoom area"
msgstr "horahanga topa"
-#, python-brace-format
-msgid ""
-"{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;"
-"\n"
-"\n"
-"/** The classic emailregex.com regex for RFC 5322-compliant emails */\n"
-"export const rfc5322Email =\n"
-" "
-"/^(([^<>()[]\\.,;:s@\"]+(.[^<>()[]\\.,;:s@\"]+)*)|(\".+\"))@(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}])|(([a-zA-Z-0-9]+.)+[a-zA-Z]{2,}))$/;"
-"\n"
-"\n"
-"/** A loose regex that allows Unicode characters, enforces length limits,"
-" and that's about it. */\n"
-"export const unicodeEmail = /^[^s@\"]{1,64}@[^s@]{1,255}$/u;\n"
-"export const idnEmail = unicodeEmail;\n"
-"\n"
-"export const browserEmail: RegExp =\n"
-" /^[a-zA-Z0-9.!#$%&'*+/=?^_"
-msgstr ""
-
msgid "© Layer attribution"
msgstr "© Whakatuakī Papa"
+
+msgid "№"
+msgstr ""
diff --git a/superset/translations/nl/LC_MESSAGES/messages.po b/superset/translations/nl/LC_MESSAGES/messages.po
index 1c986d6f98a..7f266f6bfc6 100644
--- a/superset/translations/nl/LC_MESSAGES/messages.po
+++ b/superset/translations/nl/LC_MESSAGES/messages.po
@@ -13,7 +13,7 @@ msgid ""
msgstr ""
"Project-Id-Version: superset-ds\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2026-05-31 07:03-0700\n"
+"POT-Creation-Date: 2026-06-05 12:59+0300\n"
"PO-Revision-Date: 2024-05-08 14:41+0000\n"
"Last-Translator: \n"
"Language: nl\n"
@@ -22,7 +22,7 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.18.0\n"
+"Generated-By: Babel 2.17.0\n"
msgid ""
"\n"
@@ -1216,6 +1216,10 @@ msgstr "Voeg nieuwe kleur formatter toe"
msgid "Add new formatter"
msgstr "Nieuwe formatter toevoegen"
+#, fuzzy
+msgid "Add numbered column"
+msgstr " berekende kolommen toevoegen"
+
#, fuzzy
msgid "Add or edit display controls"
msgstr "Filters toevoegen en bewerken"
@@ -1799,7 +1803,7 @@ msgstr ""
"Er is een fout opgetreden tijdens het ophalen van beschikbare CSS "
"templates"
-#, fuzzy, python-format
+#, fuzzy
msgid "An error occurred while fetching semantic layers"
msgstr "Er is een fout opgetreden tijdens het ophalen van schemawaarden: %s"
@@ -1880,7 +1884,7 @@ msgstr "Er is een fout opgetreden tijdens het parsen van de sleutel."
msgid "An error occurred while pruning logs "
msgstr "Er is een fout opgetreden tijdens opschonen van de logbestanden "
-#, fuzzy, python-format
+#, fuzzy
msgid "An error occurred while refreshing the configuration schema"
msgstr "Er is een fout opgetreden bij het renderen van de visualisatie: %s"
@@ -2443,7 +2447,7 @@ msgstr "Database poort"
msgid "Base height"
msgstr "Grafiek hoogte"
-#, fuzzy, python-format
+#, fuzzy
msgid "Base layer map style. Accepts a MapLibre-compatible style URL."
msgstr "Basislaag kaartstijl. Zie Mapbox documentatie: %s"
@@ -4273,6 +4277,13 @@ msgstr ""
"Aangepaste SQL ad hoc statistieken zijn niet ingeschakeld voor deze "
"dataset"
+msgid "Custom SQL fields cannot be parsed as a single SQL statement."
+msgstr ""
+
+#, fuzzy
+msgid "Custom SQL fields cannot contain set operations."
+msgstr "Aangepaste SQL velden mogen geen sub-query's bevatten."
+
msgid "Custom SQL fields cannot contain sub-queries."
msgstr "Aangepaste SQL velden mogen geen sub-query's bevatten."
@@ -5764,7 +5775,7 @@ msgid "Duration in ms (100.40008 => 100ms 400µs 80ns)"
msgstr "Duur in ms (100.40008 => 100ms 400μs 80ns)"
#, fuzzy
-msgid "Duration in ms (10500 => 0:10.5)"
+msgid "Duration in ms (10500 => 0:00:10.5)"
msgstr "Duur in ms (66000 => 1m 6s)"
msgid "Duration in ms (66000 => 1m 6s)"
@@ -9474,7 +9485,7 @@ msgstr ""
msgid "No table columns"
msgstr "Geen tabelkolommen"
-#, fuzzy, python-format
+#, fuzzy
msgid "No tasks yet"
msgstr "Nog geen %s"
@@ -9567,6 +9578,10 @@ msgstr "Niet gedefinieerd"
msgid "Not equal to (≠)"
msgstr "Niet gelijk aan (≠)"
+#, fuzzy
+msgid "Not found"
+msgstr "Grafiek niet gevonden"
+
msgid "Not in"
msgstr "Niet in"
@@ -10637,6 +10652,12 @@ msgstr "Verouderd"
msgid "Proportional"
msgstr "Proportioneel"
+msgid "Public and privately shared sheets"
+msgstr ""
+
+msgid "Publicly shared sheets only"
+msgstr ""
+
msgid "Published"
msgstr "Gepubliceerd"
@@ -10901,9 +10922,6 @@ msgstr "Vooraf-filter"
msgid "Registration date"
msgstr "Start datum"
-msgid "Registration hash"
-msgstr ""
-
msgid "Registration successful"
msgstr ""
@@ -11421,6 +11439,12 @@ msgstr "SQL"
msgid "SQL Lab"
msgstr "SQL-lab"
+msgid ""
+"SQL Lab cannot authorise a statement that could not be fully parsed. "
+"Qualify tables explicitly and avoid dynamic SQL inside stored-procedure "
+"or vendor-specific calls."
+msgstr ""
+
#, fuzzy
msgid "SQL Lab queries"
msgstr "opgeslagen queries"
@@ -15730,6 +15754,9 @@ msgstr "Voer een waarde in"
msgid "Type is required"
msgstr "Type is vereist"
+msgid "Type of Google Sheets allowed"
+msgstr ""
+
msgid "Type of chart to display in sparkline"
msgstr ""
@@ -15896,6 +15923,10 @@ msgstr "Actie ongedaan maken"
msgid "Undo?"
msgstr "Ongedaan maken?"
+#, fuzzy
+msgid "Unexpected HTTP 401 response. Check your credentials."
+msgstr "Er is een onverwachte fout opgetreden, controleer uw logs voor details"
+
msgid "Unexpected error"
msgstr "Onverwachte fout"
@@ -16880,6 +16911,10 @@ msgstr "Of de min en max waarden van de X-as getoond moeten worden"
msgid "Whether to display the min and max values of the Y-axis"
msgstr "Of de min en max waarden van de Y-as getoond moeten worden"
+#, fuzzy
+msgid "Whether to display the numbered column"
+msgstr "Of de trendlijn moet worden weergegeven"
+
msgid "Whether to display the numerical values within the cells"
msgstr "Of de numerieke waarden binnen de cellen moeten worden weergegeven"
@@ -18472,6 +18507,10 @@ msgstr "waarde oplopend"
msgid "value descending"
msgstr "waarde aflopend"
+#, fuzzy
+msgid "valuename"
+msgstr "Tabel Naam"
+
msgid "var"
msgstr "var"
@@ -18521,25 +18560,8 @@ msgstr ""
msgid "zoom area"
msgstr "zoom gebied"
-#, python-brace-format
-msgid ""
-"{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;"
-"\n"
-"\n"
-"/** The classic emailregex.com regex for RFC 5322-compliant emails */\n"
-"export const rfc5322Email =\n"
-" "
-"/^(([^<>()[]\\.,;:s@\"]+(.[^<>()[]\\.,;:s@\"]+)*)|(\".+\"))@(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}])|(([a-zA-Z-0-9]+.)+[a-zA-Z]{2,}))$/;"
-"\n"
-"\n"
-"/** A loose regex that allows Unicode characters, enforces length limits,"
-" and that's about it. */\n"
-"export const unicodeEmail = /^[^s@\"]{1,64}@[^s@]{1,255}$/u;\n"
-"export const idnEmail = unicodeEmail;\n"
-"\n"
-"export const browserEmail: RegExp =\n"
-" /^[a-zA-Z0-9.!#$%&'*+/=?^_"
+msgid "© Layer attribution"
msgstr ""
-msgid "© Layer attribution"
+msgid "№"
msgstr ""
diff --git a/superset/translations/pl/LC_MESSAGES/messages.po b/superset/translations/pl/LC_MESSAGES/messages.po
index a19dbc13d71..7f6f89b5ff8 100644
--- a/superset/translations/pl/LC_MESSAGES/messages.po
+++ b/superset/translations/pl/LC_MESSAGES/messages.po
@@ -17,7 +17,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2026-05-31 07:03-0700\n"
+"POT-Creation-Date: 2026-06-05 12:59+0300\n"
"PO-Revision-Date: 2021-11-16 17:33+0100\n"
"Last-Translator: FULL NAME <EM...@ADDRESS>\n"
"Language: fr\n"
@@ -26,7 +26,7 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.18.0\n"
+"Generated-By: Babel 2.17.0\n"
msgid ""
"\n"
@@ -1266,6 +1266,10 @@ msgstr "Dodaj nowy formater kolorów"
msgid "Add new formatter"
msgstr "Dodaj nowy formater"
+#, fuzzy
+msgid "Add numbered column"
+msgstr " aby dodać obliczane kolumny"
+
#, fuzzy
msgid "Add or edit display controls"
msgstr "Dodaj i edytuj filtry"
@@ -1854,7 +1858,7 @@ msgstr "Wystąpił błąd podczas usuwania wartości."
msgid "An error occurred while fetching semantic layer types"
msgstr "Wystąpił błąd podczas pobierania dostępnych szablonów CSS."
-#, fuzzy, python-format
+#, fuzzy
msgid "An error occurred while fetching semantic layers"
msgstr "Wystąpił błąd podczas usuwania wartości."
@@ -1928,7 +1932,7 @@ msgstr "Wystąpił błąd podczas analizowania klucza."
msgid "An error occurred while pruning logs "
msgstr "Wystąpił błąd podczas czyszczenia dzienników."
-#, fuzzy, python-format
+#, fuzzy
msgid "An error occurred while refreshing the configuration schema"
msgstr "Wystąpił błąd podczas usuwania wartości."
@@ -2490,7 +2494,7 @@ msgstr "Port bazy danych"
msgid "Base height"
msgstr "Wysokość wykresu"
-#, fuzzy, python-format
+#, fuzzy
msgid "Base layer map style. Accepts a MapLibre-compatible style URL."
msgstr "Styl mapy warstwy podstawowej. Zobacz dokumentację Mapbox: %s"
@@ -4367,6 +4371,13 @@ msgstr "Niestandardowy SQL"
msgid "Custom SQL ad-hoc metrics are not enabled for this dataset"
msgstr "Niestandardowe metryki SQL ad-hoc nie są włączone dla tego zestawu danych"
+msgid "Custom SQL fields cannot be parsed as a single SQL statement."
+msgstr ""
+
+#, fuzzy
+msgid "Custom SQL fields cannot contain set operations."
+msgstr "Pola niestandardowego SQL nie mogą zawierać podzapytań."
+
msgid "Custom SQL fields cannot contain sub-queries."
msgstr "Pola niestandardowego SQL nie mogą zawierać podzapytań."
@@ -5913,7 +5924,7 @@ msgid "Duration in ms (100.40008 => 100ms 400µs 80ns)"
msgstr "Czas trwania w ms (100.40008 => 100ms 400µs 80ns)"
#, fuzzy
-msgid "Duration in ms (10500 => 0:10.5)"
+msgid "Duration in ms (10500 => 0:00:10.5)"
msgstr "Czas trwania w ms (66000 => 1m 6s)"
msgid "Duration in ms (66000 => 1m 6s)"
@@ -9732,7 +9743,7 @@ msgstr ""
msgid "No table columns"
msgstr "Brak kolumn tabeli"
-#, fuzzy, python-format
+#, fuzzy
msgid "No tasks yet"
msgstr "Jeszcze brak %s"
@@ -9825,6 +9836,10 @@ msgstr "Nie zdefiniowano"
msgid "Not equal to (≠)"
msgstr "Nie równe (≠)"
+#, fuzzy
+msgid "Not found"
+msgstr "Nie znaleziono wykresu"
+
msgid "Not in"
msgstr "Nie w"
@@ -10931,6 +10946,12 @@ msgstr "Przestarzałe"
msgid "Proportional"
msgstr "Proporcjonalny"
+msgid "Public and privately shared sheets"
+msgstr ""
+
+msgid "Publicly shared sheets only"
+msgstr ""
+
msgid "Published"
msgstr "Opublikowany"
@@ -11215,9 +11236,6 @@ msgstr "Filtr wstępny"
msgid "Registration date"
msgstr "Data rozpoczęcia"
-msgid "Registration hash"
-msgstr ""
-
msgid "Registration successful"
msgstr ""
@@ -11765,6 +11783,12 @@ msgstr "SQL"
msgid "SQL Lab"
msgstr "SQL Lab"
+msgid ""
+"SQL Lab cannot authorise a statement that could not be fully parsed. "
+"Qualify tables explicitly and avoid dynamic SQL inside stored-procedure "
+"or vendor-specific calls."
+msgstr ""
+
#, fuzzy
msgid "SQL Lab queries"
msgstr "zapisane zapytania"
@@ -16276,6 +16300,9 @@ msgstr "Wpisz wartość"
msgid "Type is required"
msgstr "Typ jest wymagany"
+msgid "Type of Google Sheets allowed"
+msgstr ""
+
msgid "Type of chart to display in sparkline"
msgstr ""
@@ -16439,6 +16466,10 @@ msgstr "Cofnij akcję"
msgid "Undo?"
msgstr "Cofnąć?"
+#, fuzzy
+msgid "Unexpected HTTP 401 response. Check your credentials."
+msgstr "Wystąpił nieoczekiwany błąd. Sprawdź dzienniki, aby uzyskać szczegóły."
+
msgid "Unexpected error"
msgstr "Nieoczekiwany błąd"
@@ -17440,6 +17471,10 @@ msgstr "Czy wyświetlać minimalne i maksymalne wartości osi X"
msgid "Whether to display the min and max values of the Y-axis"
msgstr "Czy wyświetlać minimalne i maksymalne wartości osi Y"
+#, fuzzy
+msgid "Whether to display the numbered column"
+msgstr "Czy wyświetlać linię trendu"
+
msgid "Whether to display the numerical values within the cells"
msgstr "Czy wyświetlać wartości liczbowe w komórkach"
@@ -19122,6 +19157,10 @@ msgstr "wartości rosnące"
msgid "value descending"
msgstr "wartości malejące"
+#, fuzzy
+msgid "valuename"
+msgstr "Nazwa tabeli"
+
#, fuzzy
msgid "var"
msgstr "zmienność"
@@ -19177,25 +19216,8 @@ msgstr ""
msgid "zoom area"
msgstr "obszar powiększenia"
-#, python-brace-format
-msgid ""
-"{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;"
-"\n"
-"\n"
-"/** The classic emailregex.com regex for RFC 5322-compliant emails */\n"
-"export const rfc5322Email =\n"
-" "
-"/^(([^<>()[]\\.,;:s@\"]+(.[^<>()[]\\.,;:s@\"]+)*)|(\".+\"))@(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}])|(([a-zA-Z-0-9]+.)+[a-zA-Z]{2,}))$/;"
-"\n"
-"\n"
-"/** A loose regex that allows Unicode characters, enforces length limits,"
-" and that's about it. */\n"
-"export const unicodeEmail = /^[^s@\"]{1,64}@[^s@]{1,255}$/u;\n"
-"export const idnEmail = unicodeEmail;\n"
-"\n"
-"export const browserEmail: RegExp =\n"
-" /^[a-zA-Z0-9.!#$%&'*+/=?^_"
+msgid "© Layer attribution"
msgstr ""
-msgid "© Layer attribution"
+msgid "№"
msgstr ""
diff --git a/superset/translations/pt/LC_MESSAGES/messages.po b/superset/translations/pt/LC_MESSAGES/messages.po
index 6eca11246f0..167ceca3a15 100644
--- a/superset/translations/pt/LC_MESSAGES/messages.po
+++ b/superset/translations/pt/LC_MESSAGES/messages.po
@@ -17,7 +17,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2026-05-31 07:03-0700\n"
+"POT-Creation-Date: 2026-06-05 12:59+0300\n"
"PO-Revision-Date: 2018-03-12 16:24+0000\n"
"Last-Translator: Nuno Heli Beires <nu...@douroeci.com>\n"
"Language: pt\n"
@@ -26,7 +26,7 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.18.0\n"
+"Generated-By: Babel 2.17.0\n"
msgid ""
"\n"
@@ -1182,6 +1182,10 @@ msgstr ""
msgid "Add new formatter"
msgstr ""
+#, fuzzy
+msgid "Add numbered column"
+msgstr "Lista de Colunas"
+
#, fuzzy
msgid "Add or edit display controls"
msgstr "Adicionar filtro"
@@ -1746,7 +1750,7 @@ msgstr "Ocorreu um erro ao renderizar a visualização: %s"
msgid "An error occurred while fetching semantic layer types"
msgstr "Ocorreu um erro ao carregar os metadados da tabela"
-#, fuzzy, python-format
+#, fuzzy
msgid "An error occurred while fetching semantic layers"
msgstr "Ocorreu um erro ao renderizar a visualização: %s"
@@ -1819,7 +1823,7 @@ msgstr "Ocorreu um erro ao criar a origem dos dados"
msgid "An error occurred while pruning logs "
msgstr "Ocorreu um erro ao renderizar a visualização: %s"
-#, fuzzy, python-format
+#, fuzzy
msgid "An error occurred while refreshing the configuration schema"
msgstr "Ocorreu um erro ao renderizar a visualização: %s"
@@ -4210,6 +4214,12 @@ msgstr ""
msgid "Custom SQL ad-hoc metrics are not enabled for this dataset"
msgstr ""
+msgid "Custom SQL fields cannot be parsed as a single SQL statement."
+msgstr ""
+
+msgid "Custom SQL fields cannot contain set operations."
+msgstr ""
+
msgid "Custom SQL fields cannot contain sub-queries."
msgstr ""
@@ -5669,7 +5679,7 @@ msgstr ""
msgid "Duration in ms (100.40008 => 100ms 400µs 80ns)"
msgstr ""
-msgid "Duration in ms (10500 => 0:10.5)"
+msgid "Duration in ms (10500 => 0:00:10.5)"
msgstr ""
msgid "Duration in ms (66000 => 1m 6s)"
@@ -9520,6 +9530,10 @@ msgstr "Indefinido"
msgid "Not equal to (≠)"
msgstr ""
+#, fuzzy
+msgid "Not found"
+msgstr "Visualização %(id)s não encontrada"
+
#, fuzzy
msgid "Not in"
msgstr "Anotações"
@@ -10568,6 +10582,12 @@ msgstr "Criado em"
msgid "Proportional"
msgstr ""
+msgid "Public and privately shared sheets"
+msgstr ""
+
+msgid "Publicly shared sheets only"
+msgstr ""
+
msgid "Published"
msgstr ""
@@ -10854,9 +10874,6 @@ msgstr "Filtro de data"
msgid "Registration date"
msgstr "Início"
-msgid "Registration hash"
-msgstr ""
-
msgid "Registration successful"
msgstr ""
@@ -11374,6 +11391,12 @@ msgstr "SQL"
msgid "SQL Lab"
msgstr "SQL Lab"
+msgid ""
+"SQL Lab cannot authorise a statement that could not be fully parsed. "
+"Qualify tables explicitly and avoid dynamic SQL inside stored-procedure "
+"or vendor-specific calls."
+msgstr ""
+
#, fuzzy
msgid "SQL Lab queries"
msgstr "Queries Gravadas"
@@ -15535,6 +15558,9 @@ msgstr "nome da origem de dados"
msgid "Type is required"
msgstr ""
+msgid "Type of Google Sheets allowed"
+msgstr ""
+
msgid "Type of chart to display in sparkline"
msgstr ""
@@ -15679,6 +15705,9 @@ msgstr "Executar a query selecionada"
msgid "Undo?"
msgstr ""
+msgid "Unexpected HTTP 401 response. Check your credentials."
+msgstr ""
+
msgid "Unexpected error"
msgstr ""
@@ -16570,6 +16599,10 @@ msgstr ""
msgid "Whether to display the min and max values of the Y-axis"
msgstr ""
+#, fuzzy
+msgid "Whether to display the numbered column"
+msgstr "Selecione uma métrica para visualizar"
+
msgid "Whether to display the numerical values within the cells"
msgstr ""
@@ -18138,6 +18171,10 @@ msgstr "Ordenar decrescente"
msgid "value descending"
msgstr "Ordenar decrescente"
+#, fuzzy
+msgid "valuename"
+msgstr "Nome da Tabela"
+
msgid "var"
msgstr ""
@@ -18189,25 +18226,8 @@ msgstr ""
msgid "zoom area"
msgstr ""
-#, python-brace-format
-msgid ""
-"{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;"
-"\n"
-"\n"
-"/** The classic emailregex.com regex for RFC 5322-compliant emails */\n"
-"export const rfc5322Email =\n"
-" "
-"/^(([^<>()[]\\.,;:s@\"]+(.[^<>()[]\\.,;:s@\"]+)*)|(\".+\"))@(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}])|(([a-zA-Z-0-9]+.)+[a-zA-Z]{2,}))$/;"
-"\n"
-"\n"
-"/** A loose regex that allows Unicode characters, enforces length limits,"
-" and that's about it. */\n"
-"export const unicodeEmail = /^[^s@\"]{1,64}@[^s@]{1,255}$/u;\n"
-"export const idnEmail = unicodeEmail;\n"
-"\n"
-"export const browserEmail: RegExp =\n"
-" /^[a-zA-Z0-9.!#$%&'*+/=?^_"
+msgid "© Layer attribution"
msgstr ""
-msgid "© Layer attribution"
+msgid "№"
msgstr ""
diff --git a/superset/translations/pt_BR/LC_MESSAGES/messages.po b/superset/translations/pt_BR/LC_MESSAGES/messages.po
index 0898130c3f7..5a752992617 100644
--- a/superset/translations/pt_BR/LC_MESSAGES/messages.po
+++ b/superset/translations/pt_BR/LC_MESSAGES/messages.po
@@ -17,7 +17,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2026-05-31 07:03-0700\n"
+"POT-Creation-Date: 2026-06-05 12:59+0300\n"
"PO-Revision-Date: 2023-05-22 08:04-0400\n"
"Last-Translator: \n"
"Language: pt_BR\n"
@@ -26,7 +26,7 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.18.0\n"
+"Generated-By: Babel 2.17.0\n"
msgid ""
"\n"
@@ -1275,6 +1275,10 @@ msgstr "Adicionar novo formatador de cores"
msgid "Add new formatter"
msgstr "Adicionar novo formatador"
+#, fuzzy
+msgid "Add numbered column"
+msgstr " para adicionar colunas calculadas"
+
#, fuzzy
msgid "Add or edit display controls"
msgstr "Adicionar e editar filtros"
@@ -1853,7 +1857,7 @@ msgstr "Ocorreu um erro durante a extração dos valores do esquema: %s"
msgid "An error occurred while fetching semantic layer types"
msgstr "Ocorreu um erro ao buscar os modelos CSS disponíveis"
-#, fuzzy, python-format
+#, fuzzy
msgid "An error occurred while fetching semantic layers"
msgstr "Ocorreu um erro durante a extração dos valores do esquema: %s"
@@ -1930,7 +1934,7 @@ msgstr "Ocorreu um erro ao analisar a chave."
msgid "An error occurred while pruning logs "
msgstr "Ocorreu um erro ao podar os registos"
-#, fuzzy, python-format
+#, fuzzy
msgid "An error occurred while refreshing the configuration schema"
msgstr "Ocorreu um erro ao renderizar a visualização: %s"
@@ -4371,6 +4375,13 @@ msgstr ""
"As métricas ad-hoc de SQL personalizado não estão ativadas para este "
"conjunto de dados"
+msgid "Custom SQL fields cannot be parsed as a single SQL statement."
+msgstr ""
+
+#, fuzzy
+msgid "Custom SQL fields cannot contain set operations."
+msgstr "Os campos SQL personalizados não podem conter subconsultas."
+
msgid "Custom SQL fields cannot contain sub-queries."
msgstr "Os campos SQL personalizados não podem conter subconsultas."
@@ -5878,7 +5889,7 @@ msgid "Duration in ms (100.40008 => 100ms 400µs 80ns)"
msgstr "Duração em ms (100,40008 => 100ms 400µs 80ns)"
#, fuzzy
-msgid "Duration in ms (10500 => 0:10.5)"
+msgid "Duration in ms (10500 => 0:00:10.5)"
msgstr "Duração em ms (66000 => 1m 6s)"
msgid "Duration in ms (66000 => 1m 6s)"
@@ -9625,7 +9636,7 @@ msgstr ""
msgid "No table columns"
msgstr "Nenhuma coluna da tabela"
-#, fuzzy, python-format
+#, fuzzy
msgid "No tasks yet"
msgstr "Sem %s ainda"
@@ -9720,6 +9731,10 @@ msgstr "Indefinido"
msgid "Not equal to (≠)"
msgstr "Diferente de (≠)"
+#, fuzzy
+msgid "Not found"
+msgstr "Gráfico não encontrado"
+
msgid "Not in"
msgstr "Não está em"
@@ -10805,6 +10820,12 @@ msgstr "Depreciado"
msgid "Proportional"
msgstr "Proporcional"
+msgid "Public and privately shared sheets"
+msgstr ""
+
+msgid "Publicly shared sheets only"
+msgstr ""
+
msgid "Published"
msgstr "Publicado"
@@ -11074,9 +11095,6 @@ msgstr "Mais filtros"
msgid "Registration date"
msgstr "Data de início"
-msgid "Registration hash"
-msgstr ""
-
msgid "Registration successful"
msgstr ""
@@ -11601,6 +11619,12 @@ msgstr "SQL"
msgid "SQL Lab"
msgstr "SQL Lab"
+msgid ""
+"SQL Lab cannot authorise a statement that could not be fully parsed. "
+"Qualify tables explicitly and avoid dynamic SQL inside stored-procedure "
+"or vendor-specific calls."
+msgstr ""
+
#, fuzzy
msgid "SQL Lab queries"
msgstr "consultas salvas"
@@ -15954,6 +15978,9 @@ msgstr "Digite um valor"
msgid "Type is required"
msgstr "O tipo é obrigatório"
+msgid "Type of Google Sheets allowed"
+msgstr ""
+
msgid "Type of chart to display in sparkline"
msgstr ""
@@ -16118,6 +16145,12 @@ msgstr "Desfazer a ação"
msgid "Undo?"
msgstr "Desfazer?"
+#, fuzzy
+msgid "Unexpected HTTP 401 response. Check your credentials."
+msgstr ""
+"Ocorreu um erro inesperado, verifique os registros(logs) para obter "
+"detalhes"
+
msgid "Unexpected error"
msgstr "Erro inesperado"
@@ -17106,6 +17139,10 @@ msgstr "Se devem ser exibidos os valores mínimo e máximo do eixo X"
msgid "Whether to display the min and max values of the Y-axis"
msgstr "Se devem ser exibidos os valores mínimo e máximo do eixo Y"
+#, fuzzy
+msgid "Whether to display the numbered column"
+msgstr "Se a linha de tendência deve ser exibida"
+
msgid "Whether to display the numerical values within the cells"
msgstr "Se deseja exibir os valores numéricos dentro das células"
@@ -18713,6 +18750,10 @@ msgstr "valor crescente"
msgid "value descending"
msgstr "valor decrescente"
+#, fuzzy
+msgid "valuename"
+msgstr "Nome da Tabela"
+
msgid "var"
msgstr "var"
@@ -18762,25 +18803,8 @@ msgstr ""
msgid "zoom area"
msgstr "área de zoom"
-#, python-brace-format
-msgid ""
-"{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;"
-"\n"
-"\n"
-"/** The classic emailregex.com regex for RFC 5322-compliant emails */\n"
-"export const rfc5322Email =\n"
-" "
-"/^(([^<>()[]\\.,;:s@\"]+(.[^<>()[]\\.,;:s@\"]+)*)|(\".+\"))@(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}])|(([a-zA-Z-0-9]+.)+[a-zA-Z]{2,}))$/;"
-"\n"
-"\n"
-"/** A loose regex that allows Unicode characters, enforces length limits,"
-" and that's about it. */\n"
-"export const unicodeEmail = /^[^s@\"]{1,64}@[^s@]{1,255}$/u;\n"
-"export const idnEmail = unicodeEmail;\n"
-"\n"
-"export const browserEmail: RegExp =\n"
-" /^[a-zA-Z0-9.!#$%&'*+/=?^_"
+msgid "© Layer attribution"
msgstr ""
-msgid "© Layer attribution"
+msgid "№"
msgstr ""
diff --git a/superset/translations/ru/LC_MESSAGES/messages.po b/superset/translations/ru/LC_MESSAGES/messages.po
index 9c3e1f57237..ef3940a8ddd 100644
--- a/superset/translations/ru/LC_MESSAGES/messages.po
+++ b/superset/translations/ru/LC_MESSAGES/messages.po
@@ -17,7 +17,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2026-05-31 07:03-0700\n"
+"POT-Creation-Date: 2026-06-05 12:59+0300\n"
"PO-Revision-Date: 2025-11-05 14:37+0300\n"
"Last-Translator: innovark\n"
"Language: ru\n"
@@ -27,7 +27,7 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.18.0\n"
+"Generated-By: Babel 2.17.0\n"
msgid ""
"\n"
@@ -1230,6 +1230,10 @@ msgstr "Окрашивать по условию"
msgid "Add new formatter"
msgstr "Новое условие"
+#, fuzzy
+msgid "Add numbered column"
+msgstr " для добавления вычисляемых столбцов"
+
msgid "Add or edit display controls"
msgstr "Добавить/изменить параметры отображения"
@@ -1778,7 +1782,7 @@ msgstr "Произошла ошибка при извлечении значен
msgid "An error occurred while fetching semantic layer types"
msgstr "Произошла ошибка при получении доступных тем"
-#, fuzzy, python-format
+#, fuzzy
msgid "An error occurred while fetching semantic layers"
msgstr "Произошла ошибка при извлечении значений схемы: %s"
@@ -1848,7 +1852,7 @@ msgstr "Произошла ошибка при парсинге ключа"
msgid "An error occurred while pruning logs "
msgstr "Произошла ошибка при удалении журналов "
-#, fuzzy, python-format
+#, fuzzy
msgid "An error occurred while refreshing the configuration schema"
msgstr "Произошла ошибка при построении диаграммы: %s"
@@ -2405,7 +2409,7 @@ msgstr "Базовая экспонента"
msgid "Base height"
msgstr "Базовая высота"
-#, fuzzy, python-format
+#, fuzzy
msgid "Base layer map style. Accepts a MapLibre-compatible style URL."
msgstr "Стиль базового слоя карты. Подробнее в документации Mapbox: %s"
@@ -4155,6 +4159,13 @@ msgstr "Через SQL"
msgid "Custom SQL ad-hoc metrics are not enabled for this dataset"
msgstr "Пользовательские ad-hoc меры SQL не разрешены для этого датасета"
+msgid "Custom SQL fields cannot be parsed as a single SQL statement."
+msgstr ""
+
+#, fuzzy
+msgid "Custom SQL fields cannot contain set operations."
+msgstr "Пользовательские поля SQL не могут содержать подзапросы"
+
msgid "Custom SQL fields cannot contain sub-queries."
msgstr "Пользовательские поля SQL не могут содержать подзапросы"
@@ -5585,16 +5596,16 @@ msgid "Duration Ms"
msgstr "Продолжительность (мс)"
msgid "Duration in ms (1.40008 => 1ms 400µs 80ns)"
-msgstr "Продолжительность в мс (1.40008 => 1ms 400µs 80ns)"
+msgstr "Продолжительность в мс (1.40008 => 1 мс 400 мкс 80 нс)"
msgid "Duration in ms (100.40008 => 100ms 400µs 80ns)"
-msgstr "Продолжительность в мс (100.40008 => 100ms 400µs 80ns)"
+msgstr "Продолжительность в мс (100.40008 => 100 мс 400 мкс 80 нс)"
-msgid "Duration in ms (10500 => 0:10.5)"
-msgstr "Продолжительность в мс (10500 => 0:10.5)"
+msgid "Duration in ms (10500 => 0:00:10.5)"
+msgstr "Продолжительность в мс (10500 => 0:00:10,5)"
msgid "Duration in ms (66000 => 1m 6s)"
-msgstr "Продолжительность в мс (66000 => 1m 6s)"
+msgstr "Продолжительность в мс (66000 => 1 мин 6 с)"
#, fuzzy
msgid "Duration in seconds"
@@ -9132,7 +9143,7 @@ msgstr ""
msgid "No table columns"
msgstr "Нет столбцов в таблице"
-#, fuzzy, python-format
+#, fuzzy
msgid "No tasks yet"
msgstr "Пока нет %s"
@@ -9219,6 +9230,10 @@ msgstr "Не определено"
msgid "Not equal to (≠)"
msgstr "Не равно (≠)"
+#, fuzzy
+msgid "Not found"
+msgstr "Диаграмма не найдена"
+
msgid "Not in"
msgstr "Not in"
@@ -10256,6 +10271,12 @@ msgstr "Id проекта"
msgid "Proportional"
msgstr "Пропорция"
+msgid "Public and privately shared sheets"
+msgstr ""
+
+msgid "Publicly shared sheets only"
+msgstr ""
+
msgid "Published"
msgstr "Опубликовано"
@@ -10504,9 +10525,6 @@ msgstr "Регистрация"
msgid "Registration date"
msgstr "Дата регистрации"
-msgid "Registration hash"
-msgstr "Хеш регистрации"
-
msgid "Registration successful"
msgstr "Регистрация выполнена успешно"
@@ -11007,6 +11025,12 @@ msgstr "SQL"
msgid "SQL Lab"
msgstr "SQL Lab"
+msgid ""
+"SQL Lab cannot authorise a statement that could not be fully parsed. "
+"Qualify tables explicitly and avoid dynamic SQL inside stored-procedure "
+"or vendor-specific calls."
+msgstr ""
+
msgid "SQL Lab queries"
msgstr "SQL Lab запросы"
@@ -15165,6 +15189,9 @@ msgstr "Введите значение"
msgid "Type is required"
msgstr "Тип обязателен"
+msgid "Type of Google Sheets allowed"
+msgstr ""
+
msgid "Type of chart to display in sparkline"
msgstr "Тип диаграммы для отображения в спарклайне"
@@ -15331,6 +15358,12 @@ msgstr "Отменить действие"
msgid "Undo?"
msgstr "Отменить?"
+#, fuzzy
+msgid "Unexpected HTTP 401 response. Check your credentials."
+msgstr ""
+"Произошла неожиданная ошибка. Проверьте историю действий для уточнения "
+"деталей."
+
msgid "Unexpected error"
msgstr "Неожиданная ошибка"
@@ -16267,6 +16300,10 @@ msgstr "Отобразить минимальное и максимальное
msgid "Whether to display the min and max values of the Y-axis"
msgstr "Отобразить минимальное и максимальное значение на оси Y"
+#, fuzzy
+msgid "Whether to display the numbered column"
+msgstr "Отобразить линию тренда"
+
msgid "Whether to display the numerical values within the cells"
msgstr "Отобразить значения"
@@ -17821,6 +17858,10 @@ msgstr "по возрастанию значения"
msgid "value descending"
msgstr "по убыванию значения"
+#, fuzzy
+msgid "valuename"
+msgstr "Имя таблицы"
+
msgid "var"
msgstr "дисперсия"
@@ -17870,25 +17911,8 @@ msgstr ""
msgid "zoom area"
msgstr "область масштабирования"
-#, python-brace-format
-msgid ""
-"{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;"
-"\n"
-"\n"
-"/** The classic emailregex.com regex for RFC 5322-compliant emails */\n"
-"export const rfc5322Email =\n"
-" "
-"/^(([^<>()[]\\.,;:s@\"]+(.[^<>()[]\\.,;:s@\"]+)*)|(\".+\"))@(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}])|(([a-zA-Z-0-9]+.)+[a-zA-Z]{2,}))$/;"
-"\n"
-"\n"
-"/** A loose regex that allows Unicode characters, enforces length limits,"
-" and that's about it. */\n"
-"export const unicodeEmail = /^[^s@\"]{1,64}@[^s@]{1,255}$/u;\n"
-"export const idnEmail = unicodeEmail;\n"
-"\n"
-"export const browserEmail: RegExp =\n"
-" /^[a-zA-Z0-9.!#$%&'*+/=?^_"
-msgstr ""
-
msgid "© Layer attribution"
msgstr "© Настройки слоя"
+
+msgid "№"
+msgstr ""
diff --git a/superset/translations/sk/LC_MESSAGES/messages.po b/superset/translations/sk/LC_MESSAGES/messages.po
index 516696a62ae..a057025df3f 100644
--- a/superset/translations/sk/LC_MESSAGES/messages.po
+++ b/superset/translations/sk/LC_MESSAGES/messages.po
@@ -17,7 +17,7 @@ msgid ""
msgstr ""
"Project-Id-Version: PROJECT VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2026-05-31 07:03-0700\n"
+"POT-Creation-Date: 2026-06-05 12:59+0300\n"
"PO-Revision-Date: 2026-05-18 15:42+0200\n"
"Last-Translator: FULL NAME <EM...@ADDRESS>\n"
"Language: sk\n"
@@ -26,7 +26,7 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.18.0\n"
+"Generated-By: Babel 2.17.0\n"
msgid ""
"\n"
@@ -1247,6 +1247,10 @@ msgstr "Pridať nový formátovač farieb"
msgid "Add new formatter"
msgstr "Pridať nový formátovač"
+#, fuzzy
+msgid "Add numbered column"
+msgstr " pre pridanie počítaných stĺpcov"
+
msgid "Add or edit display controls"
msgstr "Pridať alebo upraviť ovládací prvky zobrazenie"
@@ -1807,7 +1811,7 @@ msgstr "Pri načítavanie hodnôt schématu došlo k chybe: %s"
msgid "An error occurred while fetching semantic layer types"
msgstr "Pri načítavanie dostupných témat došlo k chybe"
-#, fuzzy, python-format
+#, fuzzy
msgid "An error occurred while fetching semantic layers"
msgstr "Pri načítavanie hodnôt schématu došlo k chybe: %s"
@@ -1880,7 +1884,7 @@ msgstr "Pri parsovanie klíče došlo k chybe."
msgid "An error occurred while pruning logs "
msgstr "Pri mazaní protokolov došlo k chybe "
-#, fuzzy, python-format
+#, fuzzy
msgid "An error occurred while refreshing the configuration schema"
msgstr "Pri vykreslovanie vizualizácia došlo k chybe: %s"
@@ -2441,7 +2445,7 @@ msgstr "Exponent základu"
msgid "Base height"
msgstr "Výška základu"
-#, fuzzy, python-format
+#, fuzzy
msgid "Base layer map style. Accepts a MapLibre-compatible style URL."
msgstr "Styl mapy základný vrstvy. Viz dokumentaci Mapbox: %s"
@@ -4227,6 +4231,13 @@ msgstr "Vlastný SQL"
msgid "Custom SQL ad-hoc metrics are not enabled for this dataset"
msgstr "Vlastný SQL ad-hoc metriky nesú pre tuto sadu dat povoleny"
+msgid "Custom SQL fields cannot be parsed as a single SQL statement."
+msgstr ""
+
+#, fuzzy
+msgid "Custom SQL fields cannot contain set operations."
+msgstr "Vlastný pole SQL nemôžu obsahovať poddotazy."
+
msgid "Custom SQL fields cannot contain sub-queries."
msgstr "Vlastný pole SQL nemôžu obsahovať poddotazy."
@@ -5714,8 +5725,8 @@ msgstr "Trvanie v ms (1.40008 => 1ms 400µs 80ns)"
msgid "Duration in ms (100.40008 => 100ms 400µs 80ns)"
msgstr "Trvanie v ms (100.40008 => 100ms 400µs 80ns)"
-msgid "Duration in ms (10500 => 0:10.5)"
-msgstr "Trvanie v ms (10500 => 0:10.5)"
+msgid "Duration in ms (10500 => 0:00:10.5)"
+msgstr "Trvanie v ms (10500 => 0:00:10.5)"
msgid "Duration in ms (66000 => 1m 6s)"
msgstr "Trvanie v ms (66000 => 1m 6s)"
@@ -9362,7 +9373,7 @@ msgstr ""
msgid "No table columns"
msgstr "Žiadne stĺpce tabuľky"
-#, fuzzy, python-format
+#, fuzzy
msgid "No tasks yet"
msgstr "Zatiaľ žiadne %s"
@@ -9451,6 +9462,10 @@ msgstr "Nedefinováno"
msgid "Not equal to (≠)"
msgstr "Nerovná sa (≠)"
+#, fuzzy
+msgid "Not found"
+msgstr "Graf nenalezen"
+
msgid "Not in"
msgstr "Nie je v"
@@ -10505,6 +10520,12 @@ msgstr "ID projektu"
msgid "Proportional"
msgstr "Proporcionální"
+msgid "Public and privately shared sheets"
+msgstr ""
+
+msgid "Publicly shared sheets only"
+msgstr ""
+
msgid "Published"
msgstr "Zveřejneno"
@@ -10765,9 +10786,6 @@ msgstr "Registrovať"
msgid "Registration date"
msgstr "Dátum registrácia"
-msgid "Registration hash"
-msgstr "Hash registrácia"
-
msgid "Registration successful"
msgstr "Registrácia úspešná"
@@ -11276,6 +11294,12 @@ msgstr "SQL"
msgid "SQL Lab"
msgstr "SQL Lab"
+msgid ""
+"SQL Lab cannot authorise a statement that could not be fully parsed. "
+"Qualify tables explicitly and avoid dynamic SQL inside stored-procedure "
+"or vendor-specific calls."
+msgstr ""
+
msgid "SQL Lab queries"
msgstr "Dotazy SQL Labu"
@@ -15548,6 +15572,9 @@ msgstr "Napište hodnotu"
msgid "Type is required"
msgstr "Typ je povinný"
+msgid "Type of Google Sheets allowed"
+msgstr ""
+
msgid "Type of chart to display in sparkline"
msgstr "Typ grafu pre zobrazenie ve sparkline"
@@ -15712,6 +15739,12 @@ msgstr "Vrátiť akci späť"
msgid "Undo?"
msgstr "Späť?"
+#, fuzzy
+msgid "Unexpected HTTP 401 response. Check your credentials."
+msgstr ""
+"Došlo k neočekávané chybe, skontrolujte prosím svoje protokoly pre "
+"podrobnosti"
+
msgid "Unexpected error"
msgstr "Neočekávaná chyba"
@@ -16668,6 +16701,10 @@ msgstr "Či zobraziť minimální a maximální hodnoty osy X"
msgid "Whether to display the min and max values of the Y-axis"
msgstr "Či zobraziť minimální a maximální hodnoty osy Y"
+#, fuzzy
+msgid "Whether to display the numbered column"
+msgstr "Či zobraziť trendovou čáru"
+
msgid "Whether to display the numerical values within the cells"
msgstr "Či zobraziť číselné hodnoty v buňkách"
@@ -18227,6 +18264,10 @@ msgstr "hodnota vzestupne"
msgid "value descending"
msgstr "hodnota sestupne"
+#, fuzzy
+msgid "valuename"
+msgstr "Názov tabuľky"
+
msgid "var"
msgstr "var"
@@ -18275,25 +18316,8 @@ msgstr "your-project-1234-a1"
msgid "zoom area"
msgstr "oblasť priblíženie"
-#, python-brace-format
-msgid ""
-"{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;"
-"\n"
-"\n"
-"/** The classic emailregex.com regex for RFC 5322-compliant emails */\n"
-"export const rfc5322Email =\n"
-" "
-"/^(([^<>()[]\\.,;:s@\"]+(.[^<>()[]\\.,;:s@\"]+)*)|(\".+\"))@(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}])|(([a-zA-Z-0-9]+.)+[a-zA-Z]{2,}))$/;"
-"\n"
-"\n"
-"/** A loose regex that allows Unicode characters, enforces length limits,"
-" and that's about it. */\n"
-"export const unicodeEmail = /^[^s@\"]{1,64}@[^s@]{1,255}$/u;\n"
-"export const idnEmail = unicodeEmail;\n"
-"\n"
-"export const browserEmail: RegExp =\n"
-" /^[a-zA-Z0-9.!#$%&'*+/=?^_"
-msgstr ""
-
msgid "© Layer attribution"
msgstr "© Atribuce vrstvy"
+
+msgid "№"
+msgstr ""
diff --git a/superset/translations/sl/LC_MESSAGES/messages.po b/superset/translations/sl/LC_MESSAGES/messages.po
index 41ac7a438cc..d33c5fb0435 100644
--- a/superset/translations/sl/LC_MESSAGES/messages.po
+++ b/superset/translations/sl/LC_MESSAGES/messages.po
@@ -17,7 +17,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Superset\n"
"Report-Msgid-Bugs-To: dkrat7 @github.com\n"
-"POT-Creation-Date: 2026-05-31 07:03-0700\n"
+"POT-Creation-Date: 2026-06-05 12:59+0300\n"
"PO-Revision-Date: 2024-10-05 23:46+0200\n"
"Last-Translator: dkrat7 <dkrat7 @github.com>\n"
"Language: sl_SI\n"
@@ -27,7 +27,7 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.18.0\n"
+"Generated-By: Babel 2.17.0\n"
msgid ""
"\n"
@@ -1266,6 +1266,10 @@ msgstr "Dodaj novo pravilo za barvo"
msgid "Add new formatter"
msgstr "Dodaj novo pravilo"
+#, fuzzy
+msgid "Add numbered column"
+msgstr " za dodajanje izračunanih stolpcev"
+
#, fuzzy
msgid "Add or edit display controls"
msgstr "Dodaj in uredi filtre"
@@ -1830,7 +1834,7 @@ msgstr "Pri pridobivanju vrednosti shem je prišlo do napake: %s"
msgid "An error occurred while fetching semantic layer types"
msgstr "Pri pridobivanju CSS predlog je prišlo do napake"
-#, fuzzy, python-format
+#, fuzzy
msgid "An error occurred while fetching semantic layers"
msgstr "Pri pridobivanju vrednosti shem je prišlo do napake: %s"
@@ -1905,7 +1909,7 @@ msgstr "Pri branju ključa je prišlo do težave."
msgid "An error occurred while pruning logs "
msgstr "Pri krajšanju dnevnikov je prišlo do napake "
-#, fuzzy, python-format
+#, fuzzy
msgid "An error occurred while refreshing the configuration schema"
msgstr "Pri prikazovanju vizualizacije je prišlo do napake: %s"
@@ -2462,7 +2466,7 @@ msgstr "Vrata podatkovne baze"
msgid "Base height"
msgstr "Višina grafikona"
-#, fuzzy, python-format
+#, fuzzy
msgid "Base layer map style. Accepts a MapLibre-compatible style URL."
msgstr "Slog osnovnega zemljevida. Glej dokumentacijo Mapbox: %s"
@@ -4250,6 +4254,13 @@ msgstr "Prilagojen SQL"
msgid "Custom SQL ad-hoc metrics are not enabled for this dataset"
msgstr "Prilagodljive ad-hoc SQL-mere za ta podatkovni set niso omogočene"
+msgid "Custom SQL fields cannot be parsed as a single SQL statement."
+msgstr ""
+
+#, fuzzy
+msgid "Custom SQL fields cannot contain set operations."
+msgstr "Prilagojena SQL-polja ne smejo vsebovati podpoizvedb."
+
msgid "Custom SQL fields cannot contain sub-queries."
msgstr "Prilagojena SQL-polja ne smejo vsebovati podpoizvedb."
@@ -5735,7 +5746,7 @@ msgid "Duration in ms (100.40008 => 100ms 400µs 80ns)"
msgstr "Trajanje v ms (100.40008 => 100ms 400µs 80ns)"
#, fuzzy
-msgid "Duration in ms (10500 => 0:10.5)"
+msgid "Duration in ms (10500 => 0:00:10.5)"
msgstr "Trajanje v ms (66000 => 1m 6s)"
msgid "Duration in ms (66000 => 1m 6s)"
@@ -9409,7 +9420,7 @@ msgstr ""
msgid "No table columns"
msgstr "Ni stolpcev tabel"
-#, fuzzy, python-format
+#, fuzzy
msgid "No tasks yet"
msgstr "%s še ne obstajajo"
@@ -9500,6 +9511,10 @@ msgstr "Ni definirano"
msgid "Not equal to (≠)"
msgstr "Ni enako (≠)"
+#, fuzzy
+msgid "Not found"
+msgstr "Grafikon ni najden"
+
msgid "Not in"
msgstr "Ne vsebuje (NOT IN)"
@@ -10559,6 +10574,12 @@ msgstr "Zastarelo"
msgid "Proportional"
msgstr "Proporcionalno"
+msgid "Public and privately shared sheets"
+msgstr ""
+
+msgid "Publicly shared sheets only"
+msgstr ""
+
msgid "Published"
msgstr "Objavljeno"
@@ -10818,9 +10839,6 @@ msgstr "Predfilter"
msgid "Registration date"
msgstr "Začetni datum"
-msgid "Registration hash"
-msgstr ""
-
msgid "Registration successful"
msgstr ""
@@ -11331,6 +11349,12 @@ msgstr "SQL"
msgid "SQL Lab"
msgstr "SQL laboratorij"
+msgid ""
+"SQL Lab cannot authorise a statement that could not be fully parsed. "
+"Qualify tables explicitly and avoid dynamic SQL inside stored-procedure "
+"or vendor-specific calls."
+msgstr ""
+
#, fuzzy
msgid "SQL Lab queries"
msgstr "shranjene poizvedbe"
@@ -15568,6 +15592,9 @@ msgstr "Vnesite vrednost"
msgid "Type is required"
msgstr "Tip je obvezen"
+msgid "Type of Google Sheets allowed"
+msgstr ""
+
msgid "Type of chart to display in sparkline"
msgstr ""
@@ -15725,6 +15752,10 @@ msgstr "Razveljavi dejanje"
msgid "Undo?"
msgstr "Povrni?"
+#, fuzzy
+msgid "Unexpected HTTP 401 response. Check your credentials."
+msgstr "Zgodila se je nepričakovana napaka. Podrobnosti preverite v dnevnikih"
+
msgid "Unexpected error"
msgstr "Nepričakovana napaka"
@@ -16687,6 +16718,10 @@ msgstr "Če želite prikaz min. in max. vrednosti X-osi"
msgid "Whether to display the min and max values of the Y-axis"
msgstr "Če želite prikaz min. in max. vrednosti Y-osi"
+#, fuzzy
+msgid "Whether to display the numbered column"
+msgstr "Če želite prikazati trendno črto"
+
msgid "Whether to display the numerical values within the cells"
msgstr "Če želite v celicah prikazati numerične vrednosti"
@@ -18248,6 +18283,10 @@ msgstr "0 - 9"
msgid "value descending"
msgstr "9 - 0"
+#, fuzzy
+msgid "valuename"
+msgstr "Ime tabele"
+
msgid "var"
msgstr "var"
@@ -18296,25 +18335,8 @@ msgstr ""
msgid "zoom area"
msgstr "približaj območje"
-#, python-brace-format
-msgid ""
-"{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;"
-"\n"
-"\n"
-"/** The classic emailregex.com regex for RFC 5322-compliant emails */\n"
-"export const rfc5322Email =\n"
-" "
-"/^(([^<>()[]\\.,;:s@\"]+(.[^<>()[]\\.,;:s@\"]+)*)|(\".+\"))@(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}])|(([a-zA-Z-0-9]+.)+[a-zA-Z]{2,}))$/;"
-"\n"
-"\n"
-"/** A loose regex that allows Unicode characters, enforces length limits,"
-" and that's about it. */\n"
-"export const unicodeEmail = /^[^s@\"]{1,64}@[^s@]{1,255}$/u;\n"
-"export const idnEmail = unicodeEmail;\n"
-"\n"
-"export const browserEmail: RegExp =\n"
-" /^[a-zA-Z0-9.!#$%&'*+/=?^_"
+msgid "© Layer attribution"
msgstr ""
-msgid "© Layer attribution"
+msgid "№"
msgstr ""
diff --git a/superset/translations/th/LC_MESSAGES/messages.po b/superset/translations/th/LC_MESSAGES/messages.po
index 385b2171c8a..ac2307bc4bd 100644
--- a/superset/translations/th/LC_MESSAGES/messages.po
+++ b/superset/translations/th/LC_MESSAGES/messages.po
@@ -17,7 +17,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Superset VERSION\n"
"Report-Msgid-Bugs-To: EMAIL@ADDRESS\n"
-"POT-Creation-Date: 2026-05-31 07:03-0700\n"
+"POT-Creation-Date: 2026-06-05 12:59+0300\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EM...@ADDRESS>\n"
"Language: th\n"
@@ -26,7 +26,7 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.18.0\n"
+"Generated-By: Babel 2.17.0\n"
# Machine-translated via backfill_po.py (claude-sonnet-4-6) [refs: ca, cs, de,
# es, fa, fr, ja, lv, mi, pt_BR, ru, sk, sl, uk]
@@ -1965,6 +1965,12 @@ msgstr "เพิ่มตัวจัดรูปแบบสีใหม่"
msgid "Add new formatter"
msgstr "เพิ่มตัวจัดรูปแบบใหม่"
+# Machine-translated via backfill_po.py (claude-sonnet-4-6) [refs: ar, ca, cs,
+# de, es, fa, fr, ja, lv, mi, nl, ru, sk, sl, uk]
+#, fuzzy
+msgid "Add numbered column"
+msgstr " เพื่อเพิ่มคอลัมน์ที่คำนวณ"
+
# Machine-translated via backfill_po.py (claude-sonnet-4-6) [refs: fr, ja, lv,
# ru, sk, uk]
#, fuzzy
@@ -2935,7 +2941,7 @@ msgstr "เกิดข้อผิดพลาดขณะดึงธีมท
# Machine-translated via backfill_po.py (claude-sonnet-4-6) [refs: ar, ca, cs,
# de, es, fa, fr, it, ja, lv, mi, nl, pt, pt_BR, ru, sk, sl, uk, zh, zh_TW]
-#, fuzzy, python-format
+#, fuzzy
msgid "An error occurred while fetching semantic layers"
msgstr "เกิดข้อผิดพลาดขณะดึงค่าสคีมา: %s"
@@ -3058,7 +3064,7 @@ msgstr "เกิดข้อผิดพลาดขณะตัดแต่ง
# Machine-translated via backfill_po.py (claude-sonnet-4-6) [refs: ar, ca, cs,
# de, es, fa, fr, it, ja, lv, mi, nl, pt, pt_BR, ru, sk, sl, uk, zh, zh_TW]
-#, fuzzy, python-format
+#, fuzzy
msgid "An error occurred while refreshing the configuration schema"
msgstr "เกิดข้อผิดพลาดขณะแสดงผลการแสดงข้อมูล: %s"
@@ -4060,7 +4066,7 @@ msgstr "ความสูงฐาน"
# Machine-translated via backfill_po.py (claude-sonnet-4-6) [refs: ar, ca, cs,
# de, es, fa, fr, ja, lv, mi, nl, pl, ru, sk, sl, uk]
-#, fuzzy, python-format
+#, fuzzy
msgid "Base layer map style. Accepts a MapLibre-compatible style URL."
msgstr "รูปแบบแผนที่เลเยอร์ฐาน ดูเอกสาร Mapbox: %s"
@@ -7275,6 +7281,15 @@ msgstr "SQL กำหนดเอง"
msgid "Custom SQL ad-hoc metrics are not enabled for this dataset"
msgstr "เมตริก SQL เฉพาะกิจแบบกำหนดเองไม่ได้เปิดใช้งานสำหรับชุดข้อมูลนี้"
+msgid "Custom SQL fields cannot be parsed as a single SQL statement."
+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]
+#, fuzzy
+msgid "Custom SQL fields cannot contain set operations."
+msgstr "ฟิลด์ SQL กำหนดเองไม่สามารถมีคำสั่งย่อยได้"
+
# 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]
#, fuzzy
@@ -9784,8 +9799,8 @@ msgstr "ระยะเวลาในหน่วยมิลลิวินา
# Machine-translated via backfill_po.py (claude-sonnet-4-6) [refs: ca, cs, es,
# fr, ja, lv, mi, ru, sk, uk]
#, fuzzy
-msgid "Duration in ms (10500 => 0:10.5)"
-msgstr "ระยะเวลาในหน่วยมิลลิวินาที (10500 => 0:10.5)"
+msgid "Duration in ms (10500 => 0:00:10.5)"
+msgstr "ระยะเวลาในหน่วยมิลลิวินาที (10500 => 0:00:10.5)"
# 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]
@@ -16360,7 +16375,7 @@ 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
+#, fuzzy
msgid "No tasks yet"
msgstr "ยังไม่มี %s"
@@ -16524,6 +16539,12 @@ msgstr "ไม่ได้กำหนด"
msgid "Not equal to (≠)"
msgstr "ไม่เท่ากับ (≠)"
+# Machine-translated via backfill_po.py (claude-sonnet-4-6) [refs: ar, ca, cs,
+# de, es, fa, fr, ja, lv, mi, nl, pl, ru, sk, sl, tr, uk]
+#, fuzzy
+msgid "Not found"
+msgstr "ไม่พบแผนภูมิ"
+
# Machine-translated via backfill_po.py (claude-sonnet-4-6) [refs: ar, ca, cs,
# de, es, fa, ja, lv, mi, nl, pl, pt_BR, ru, sk, sl, uk]
#, fuzzy
@@ -18420,6 +18441,12 @@ msgstr "รหัสโครงการ"
msgid "Proportional"
msgstr "สัดส่วน"
+msgid "Public and privately shared sheets"
+msgstr ""
+
+msgid "Publicly shared sheets only"
+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, tr, uk, zh, zh_TW]
#, fuzzy
@@ -18911,12 +18938,6 @@ msgstr "ลงทะเบียน"
msgid "Registration date"
msgstr "วันที่ลงทะเบียน"
-# Machine-translated via backfill_po.py (claude-sonnet-4-6) [refs: cs, fr, ja,
-# lv, ru, sk, uk]
-#, fuzzy
-msgid "Registration hash"
-msgstr "แฮชการลงทะเบียน"
-
# Machine-translated via backfill_po.py (claude-sonnet-4-6) [refs: cs, ja, ru,
# sk, uk]
#, fuzzy
@@ -19847,6 +19868,12 @@ msgstr "SQL"
msgid "SQL Lab"
msgstr "SQL Lab"
+msgid ""
+"SQL Lab cannot authorise a statement that could not be fully parsed. "
+"Qualify tables explicitly and avoid dynamic SQL inside stored-procedure "
+"or vendor-specific calls."
+msgstr ""
+
# Machine-translated via backfill_po.py (claude-sonnet-4-6) [refs: ca, cs, es,
# ja, lv, mi, ru, sk, uk]
#, fuzzy
@@ -27026,6 +27053,9 @@ msgstr "พิมพ์ค่า"
msgid "Type is required"
msgstr "ต้องระบุประเภท"
+msgid "Type of Google Sheets allowed"
+msgstr ""
+
# Machine-translated via backfill_po.py (claude-sonnet-4-6) [refs: cs, ja, lv,
# ru, sk, uk]
#, fuzzy
@@ -27283,6 +27313,12 @@ msgstr "เลิกทำการกระทำ"
msgid "Undo?"
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, tr, uk, zh, zh_TW]
+#, fuzzy
+msgid "Unexpected HTTP 401 response. Check your credentials."
+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, tr, uk, zh, zh_TW]
#, fuzzy
@@ -28854,6 +28890,12 @@ msgstr "ว่าจะแสดงค่าต่ำสุดและสูง
msgid "Whether to display the min and max values of the Y-axis"
msgstr "ว่าจะแสดงค่าต่ำสุดและสูงสุดของแกน Y หรือไม่"
+# 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
+msgid "Whether to display the numbered column"
+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
@@ -31658,6 +31700,12 @@ msgstr "ค่าจากน้อยไปมาก"
msgid "value descending"
msgstr "ค่าจากมากไปน้อย"
+# Machine-translated via backfill_po.py (claude-sonnet-4-6) [refs: ca, cs, es,
+# fr, ja, lv, mi, ru, sk, uk]
+#, fuzzy
+msgid "valuename"
+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
@@ -31757,28 +31805,11 @@ msgstr "your-project-1234-a1"
msgid "zoom area"
msgstr "พื้นที่ซูม"
-#, python-brace-format
-msgid ""
-"{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;"
-"\n"
-"\n"
-"/** The classic emailregex.com regex for RFC 5322-compliant emails */\n"
-"export const rfc5322Email =\n"
-" "
-"/^(([^<>()[]\\.,;:s@\"]+(.[^<>()[]\\.,;:s@\"]+)*)|(\".+\"))@(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}])|(([a-zA-Z-0-9]+.)+[a-zA-Z]{2,}))$/;"
-"\n"
-"\n"
-"/** A loose regex that allows Unicode characters, enforces length limits,"
-" and that's about it. */\n"
-"export const unicodeEmail = /^[^s@\"]{1,64}@[^s@]{1,255}$/u;\n"
-"export const idnEmail = unicodeEmail;\n"
-"\n"
-"export const browserEmail: RegExp =\n"
-" /^[a-zA-Z0-9.!#$%&'*+/=?^_"
-msgstr ""
-
# Machine-translated via backfill_po.py (claude-sonnet-4-6) [refs: ca, cs, es,
# fr, ja, lv, mi, ru, sk, uk]
#, fuzzy
msgid "© Layer attribution"
msgstr "© การระบุแหล่งที่มาของเลเยอร์"
+
+msgid "№"
+msgstr ""
diff --git a/superset/translations/tr/LC_MESSAGES/messages.po b/superset/translations/tr/LC_MESSAGES/messages.po
index 4d77f579625..dbe4be53771 100644
--- a/superset/translations/tr/LC_MESSAGES/messages.po
+++ b/superset/translations/tr/LC_MESSAGES/messages.po
@@ -21,7 +21,7 @@ msgid ""
msgstr ""
"Project-Id-Version: Superset VERSION\n"
"Report-Msgid-Bugs-To: avsarcoteli@gmail.com\n"
-"POT-Creation-Date: 2026-05-31 07:03-0700\n"
+"POT-Creation-Date: 2026-06-05 12:59+0300\n"
"PO-Revision-Date: 2024-02-25 14:00+0300\n"
"Last-Translator: FULL NAME <EM...@ADDRESS>\n"
"Language: tr\n"
@@ -30,7 +30,7 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.18.0\n"
+"Generated-By: Babel 2.17.0\n"
msgid ""
"\n"
@@ -1119,6 +1119,10 @@ msgstr ""
msgid "Add new formatter"
msgstr ""
+#, fuzzy
+msgid "Add numbered column"
+msgstr "Kolon seç"
+
#, fuzzy
msgid "Add or edit display controls"
msgstr "Ekle ve filtreleri düzenle"
@@ -3967,6 +3971,12 @@ msgstr ""
msgid "Custom SQL ad-hoc metrics are not enabled for this dataset"
msgstr ""
+msgid "Custom SQL fields cannot be parsed as a single SQL statement."
+msgstr ""
+
+msgid "Custom SQL fields cannot contain set operations."
+msgstr ""
+
msgid "Custom SQL fields cannot contain sub-queries."
msgstr ""
@@ -5331,7 +5341,7 @@ msgstr ""
msgid "Duration in ms (100.40008 => 100ms 400µs 80ns)"
msgstr ""
-msgid "Duration in ms (10500 => 0:10.5)"
+msgid "Duration in ms (10500 => 0:00:10.5)"
msgstr ""
msgid "Duration in ms (66000 => 1m 6s)"
@@ -8945,6 +8955,10 @@ msgstr ""
msgid "Not equal to (≠)"
msgstr ""
+#, fuzzy
+msgid "Not found"
+msgstr "Grafik bulunamadı"
+
msgid "Not in"
msgstr ""
@@ -9928,6 +9942,12 @@ msgstr ""
msgid "Proportional"
msgstr ""
+msgid "Public and privately shared sheets"
+msgstr ""
+
+msgid "Publicly shared sheets only"
+msgstr ""
+
msgid "Published"
msgstr "Paylaşıldı"
@@ -10184,9 +10204,6 @@ msgstr ""
msgid "Registration date"
msgstr "Başlangıç tarihi"
-msgid "Registration hash"
-msgstr ""
-
msgid "Registration successful"
msgstr ""
@@ -10671,6 +10688,12 @@ msgstr ""
msgid "SQL Lab"
msgstr ""
+msgid ""
+"SQL Lab cannot authorise a statement that could not be fully parsed. "
+"Qualify tables explicitly and avoid dynamic SQL inside stored-procedure "
+"or vendor-specific calls."
+msgstr ""
+
#, fuzzy
msgid "SQL Lab queries"
msgstr "kaydedilmiş sorgular"
@@ -12159,7 +12182,7 @@ msgstr ""
msgid "Sort by original table order"
msgstr ""
-#, fuzzy, python-format
+#, fuzzy
msgid "Sort by series"
msgstr "%s’e göre sırala"
@@ -14580,6 +14603,9 @@ msgstr "Bir değer girin"
msgid "Type is required"
msgstr ""
+msgid "Type of Google Sheets allowed"
+msgstr ""
+
msgid "Type of chart to display in sparkline"
msgstr ""
@@ -14720,6 +14746,10 @@ msgstr ""
msgid "Undo?"
msgstr "Geri almak ister misiniz?"
+#, fuzzy
+msgid "Unexpected HTTP 401 response. Check your credentials."
+msgstr "Beklenmeyen bir hata oluştu, detaylar için lütfen loglarınızı kontrol edin"
+
msgid "Unexpected error"
msgstr "Beklenmeyen hata"
@@ -15573,6 +15603,9 @@ msgstr ""
msgid "Whether to display the min and max values of the Y-axis"
msgstr ""
+msgid "Whether to display the numbered column"
+msgstr ""
+
msgid "Whether to display the numerical values within the cells"
msgstr ""
@@ -15986,11 +16019,11 @@ msgstr "Bu verisetine erişemezsiniz."
msgid "You don't have permission to copy to clipboard"
msgstr "Değeri değiştirmek için yetkiniz yok."
-#, fuzzy, python-format
+#, fuzzy
msgid "You don't have permission to export data"
msgstr "Bu %s’i değiştirmeye yetkiniz yok"
-#, fuzzy, python-format
+#, fuzzy
msgid "You don't have permission to export images"
msgstr "Bu %s’i değiştirmeye yetkiniz yok"
@@ -17056,6 +17089,10 @@ msgstr ""
msgid "value descending"
msgstr ""
+#, fuzzy
+msgid "valuename"
+msgstr "Tablo ismi"
+
msgid "var"
msgstr ""
@@ -17104,25 +17141,8 @@ msgstr ""
msgid "zoom area"
msgstr ""
-#, python-brace-format
-msgid ""
-"{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;"
-"\n"
-"\n"
-"/** The classic emailregex.com regex for RFC 5322-compliant emails */\n"
-"export const rfc5322Email =\n"
-" "
-"/^(([^<>()[]\\.,;:s@\"]+(.[^<>()[]\\.,;:s@\"]+)*)|(\".+\"))@(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}])|(([a-zA-Z-0-9]+.)+[a-zA-Z]{2,}))$/;"
-"\n"
-"\n"
-"/** A loose regex that allows Unicode characters, enforces length limits,"
-" and that's about it. */\n"
-"export const unicodeEmail = /^[^s@\"]{1,64}@[^s@]{1,255}$/u;\n"
-"export const idnEmail = unicodeEmail;\n"
-"\n"
-"export const browserEmail: RegExp =\n"
-" /^[a-zA-Z0-9.!#$%&'*+/=?^_"
+msgid "© Layer attribution"
msgstr ""
-msgid "© Layer attribution"
+msgid "№"
msgstr ""
diff --git a/superset/translations/uk/LC_MESSAGES/messages.po b/superset/translations/uk/LC_MESSAGES/messages.po
index 0f7c84f47be..7ffa53f04e9 100644
--- a/superset/translations/uk/LC_MESSAGES/messages.po
+++ b/superset/translations/uk/LC_MESSAGES/messages.po
@@ -18,7 +18,7 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: ted.korostiled@gmail.com\n"
-"POT-Creation-Date: 2026-05-31 07:03-0700\n"
+"POT-Creation-Date: 2026-06-05 12:59+0300\n"
"PO-Revision-Date: 2026-04-30 22:04+0300\n"
"Last-Translator: Danylo Korostil\n"
"Language: uk\n"
@@ -28,7 +28,7 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.18.0\n"
+"Generated-By: Babel 2.17.0\n"
msgid ""
"\n"
@@ -1246,6 +1246,10 @@ msgstr "Додати нову кольорову гамму"
msgid "Add new formatter"
msgstr "Додати нову умову"
+#, fuzzy
+msgid "Add numbered column"
+msgstr " для додавання обчислювальних стовпців"
+
msgid "Add or edit display controls"
msgstr "Додати або редагувати контроль вигляду"
@@ -1787,7 +1791,7 @@ msgstr "Не вдалось одержати інформацію про схе
msgid "An error occurred while fetching semantic layer types"
msgstr "Не вдалось одержати доступні теми"
-#, fuzzy, python-format
+#, fuzzy
msgid "An error occurred while fetching semantic layers"
msgstr "Не вдалось одержати інформацію про схему: %s"
@@ -1855,7 +1859,7 @@ msgstr "Не вдалося розібрати ключ."
msgid "An error occurred while pruning logs "
msgstr "Не вдалося очистити журнали "
-#, fuzzy, python-format
+#, fuzzy
msgid "An error occurred while refreshing the configuration schema"
msgstr "Не вдалося відтворити візуалізацію: %s"
@@ -2403,7 +2407,7 @@ msgstr "Основний ступінь"
msgid "Base height"
msgstr "Основна висота"
-#, fuzzy, python-format
+#, fuzzy
msgid "Base layer map style. Accepts a MapLibre-compatible style URL."
msgstr "Стиль карти основного шару. Переглянути документацію Mapbox: %s"
@@ -4143,6 +4147,13 @@ msgstr "Нетиповий запит"
msgid "Custom SQL ad-hoc metrics are not enabled for this dataset"
msgstr "Нетипові показники вимкнено для цього набору даних"
+msgid "Custom SQL fields cannot be parsed as a single SQL statement."
+msgstr ""
+
+#, fuzzy
+msgid "Custom SQL fields cannot contain set operations."
+msgstr "Нетипові поля запиту не можуть містити підзапити."
+
msgid "Custom SQL fields cannot contain sub-queries."
msgstr "Нетипові поля запиту не можуть містити підзапити."
@@ -5585,8 +5596,8 @@ msgstr "Тривалість у мілісекундах (наприклад: 1.
msgid "Duration in ms (100.40008 => 100ms 400µs 80ns)"
msgstr "Тривалість у мілісекундах (наприклад: 100.40008 → 100 мс 400 мкс 80 нс)"
-msgid "Duration in ms (10500 => 0:10.5)"
-msgstr "Тривалість у мілісекундах (наприклад: 10500 => 0:10.5)"
+msgid "Duration in ms (10500 => 0:00:10.5)"
+msgstr "Тривалість у мілісекундах (наприклад: 10500 => 0:00:10.5)"
msgid "Duration in ms (66000 => 1m 6s)"
msgstr "Тривалість у мілісекундах (наприклад: 10500 => 1 хв 6 с)"
@@ -9110,7 +9121,7 @@ msgstr ""
msgid "No table columns"
msgstr "Немає стовпців у таблиці"
-#, fuzzy, python-format
+#, fuzzy
msgid "No tasks yet"
msgstr "Ще немає %s"
@@ -9197,6 +9208,10 @@ msgstr "Не визначено"
msgid "Not equal to (≠)"
msgstr "Не дорівнює (≠)"
+#, fuzzy
+msgid "Not found"
+msgstr "Діаграму не знайдено"
+
msgid "Not in"
msgstr "Не в"
@@ -10226,6 +10241,12 @@ msgstr "Ідентифікатор проєкту"
msgid "Proportional"
msgstr "Пропорційний"
+msgid "Public and privately shared sheets"
+msgstr ""
+
+msgid "Publicly shared sheets only"
+msgstr ""
+
msgid "Published"
msgstr "Оприлюднений"
@@ -10476,9 +10497,6 @@ msgstr "Реєстрація"
msgid "Registration date"
msgstr "Дата реєстрації"
-msgid "Registration hash"
-msgstr "Хеш реєстрації"
-
msgid "Registration successful"
msgstr "Успішна реєстрація"
@@ -10976,6 +10994,12 @@ msgstr "Запити"
msgid "SQL Lab"
msgstr "Майстерня запитів"
+msgid ""
+"SQL Lab cannot authorise a statement that could not be fully parsed. "
+"Qualify tables explicitly and avoid dynamic SQL inside stored-procedure "
+"or vendor-specific calls."
+msgstr ""
+
msgid "SQL Lab queries"
msgstr "Збережені запити"
@@ -15145,6 +15169,9 @@ msgstr "Введіть значення"
msgid "Type is required"
msgstr "Тип обовʼязковий"
+msgid "Type of Google Sheets allowed"
+msgstr ""
+
msgid "Type of chart to display in sparkline"
msgstr "Тип діаграми, яку показувати у нитці"
@@ -15307,6 +15334,10 @@ msgstr "Скасувати дію"
msgid "Undo?"
msgstr "Скасувати?"
+#, fuzzy
+msgid "Unexpected HTTP 401 response. Check your credentials."
+msgstr "Трапилася неочікувана помилка, перевірте журнал для подробиць"
+
msgid "Unexpected error"
msgstr "Неочікувана помилка"
@@ -16253,6 +16284,10 @@ msgstr "Чи показувати найменше чи найбільше зн
msgid "Whether to display the min and max values of the Y-axis"
msgstr "Чи показувати найменше чи найбільше значення на осі Y"
+#, fuzzy
+msgid "Whether to display the numbered column"
+msgstr "Чи показувати динаміку"
+
msgid "Whether to display the numerical values within the cells"
msgstr "Чи показувати числові значення у комірках"
@@ -17780,6 +17815,10 @@ msgstr "значення за зростанням"
msgid "value descending"
msgstr "значення за спаданням"
+#, fuzzy
+msgid "valuename"
+msgstr "Назва таблиці"
+
msgid "var"
msgstr "дисперсія"
@@ -17828,25 +17867,8 @@ msgstr "your-project-1234-a1"
msgid "zoom area"
msgstr "ділянка масштабування"
-#, python-brace-format
-msgid ""
-"{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;"
-"\n"
-"\n"
-"/** The classic emailregex.com regex for RFC 5322-compliant emails */\n"
-"export const rfc5322Email =\n"
-" "
-"/^(([^<>()[]\\.,;:s@\"]+(.[^<>()[]\\.,;:s@\"]+)*)|(\".+\"))@(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}])|(([a-zA-Z-0-9]+.)+[a-zA-Z]{2,}))$/;"
-"\n"
-"\n"
-"/** A loose regex that allows Unicode characters, enforces length limits,"
-" and that's about it. */\n"
-"export const unicodeEmail = /^[^s@\"]{1,64}@[^s@]{1,255}$/u;\n"
-"export const idnEmail = unicodeEmail;\n"
-"\n"
-"export const browserEmail: RegExp =\n"
-" /^[a-zA-Z0-9.!#$%&'*+/=?^_"
-msgstr ""
-
msgid "© Layer attribution"
msgstr "© Атрибут шару"
+
+msgid "№"
+msgstr ""
diff --git a/superset/translations/zh/LC_MESSAGES/messages.po b/superset/translations/zh/LC_MESSAGES/messages.po
index 226010d83b0..f45d80889ae 100644
--- a/superset/translations/zh/LC_MESSAGES/messages.po
+++ b/superset/translations/zh/LC_MESSAGES/messages.po
@@ -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-05-31 07:03-0700\n"
+"POT-Creation-Date: 2026-06-05 12:59+0300\n"
"PO-Revision-Date: 2019-01-04 22:19+0800\n"
"Last-Translator: cdmikechen \n"
"Language: zh\n"
@@ -27,7 +27,7 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.18.0\n"
+"Generated-By: Babel 2.17.0\n"
msgid ""
"\n"
@@ -1178,6 +1178,10 @@ msgstr "增加新的的颜色格式化器"
msgid "Add new formatter"
msgstr "新增格式化"
+#, fuzzy
+msgid "Add numbered column"
+msgstr "添加计算列"
+
#, fuzzy
msgid "Add or edit display controls"
msgstr "范围过滤"
@@ -1724,7 +1728,7 @@ msgstr "获取结构信息时出错:%s"
msgid "An error occurred while fetching semantic layer types"
msgstr "获取可用的CSS模板时出错"
-#, fuzzy, python-format
+#, fuzzy
msgid "An error occurred while fetching semantic layers"
msgstr "获取结构信息时出错:%s"
@@ -1797,7 +1801,7 @@ msgstr "更新值时出错。"
msgid "An error occurred while pruning logs "
msgstr "精简日志时出错 "
-#, fuzzy, python-format
+#, fuzzy
msgid "An error occurred while refreshing the configuration schema"
msgstr "渲染可视化时发生错误:%s"
@@ -4192,6 +4196,12 @@ msgstr "自定义SQL"
msgid "Custom SQL ad-hoc metrics are not enabled for this dataset"
msgstr "此数据集无法启用自定义SQL即席查询、"
+msgid "Custom SQL fields cannot be parsed as a single SQL statement."
+msgstr ""
+
+msgid "Custom SQL fields cannot contain set operations."
+msgstr ""
+
msgid "Custom SQL fields cannot contain sub-queries."
msgstr ""
@@ -5623,7 +5633,7 @@ msgid "Duration in ms (100.40008 => 100ms 400µs 80ns)"
msgstr "时长(毫秒)(1.40008 => 1ms 400µs 80ns)"
#, fuzzy
-msgid "Duration in ms (10500 => 0:10.5)"
+msgid "Duration in ms (10500 => 0:00:10.5)"
msgstr "时长(毫秒)(66000 => 1m 6s)"
msgid "Duration in ms (66000 => 1m 6s)"
@@ -9389,7 +9399,7 @@ msgstr "没有发现这样的列。若要在度量值上筛选,请尝试自定
msgid "No table columns"
msgstr "没有列"
-#, fuzzy, python-format
+#, fuzzy
msgid "No tasks yet"
msgstr "还没有 %s"
@@ -9486,6 +9496,10 @@ msgstr "未定义"
msgid "Not equal to (≠)"
msgstr "不等于(≠)"
+#, fuzzy
+msgid "Not found"
+msgstr "图表 %(id)s 没有找到"
+
#, fuzzy
msgid "Not in"
msgstr "Not In"
@@ -10533,6 +10547,12 @@ msgstr "过时"
msgid "Proportional"
msgstr "比例"
+msgid "Public and privately shared sheets"
+msgstr ""
+
+msgid "Publicly shared sheets only"
+msgstr ""
+
msgid "Published"
msgstr "已发布"
@@ -10803,9 +10823,6 @@ msgstr "预过滤"
msgid "Registration date"
msgstr "开始时间"
-msgid "Registration hash"
-msgstr ""
-
msgid "Registration successful"
msgstr ""
@@ -11320,6 +11337,12 @@ msgstr "SQL"
msgid "SQL Lab"
msgstr "SQL 工具箱"
+msgid ""
+"SQL Lab cannot authorise a statement that could not be fully parsed. "
+"Qualify tables explicitly and avoid dynamic SQL inside stored-procedure "
+"or vendor-specific calls."
+msgstr ""
+
#, fuzzy
msgid "SQL Lab queries"
msgstr "已保存查询"
@@ -15451,6 +15474,9 @@ msgstr "请输入值"
msgid "Type is required"
msgstr "类型是必需的"
+msgid "Type of Google Sheets allowed"
+msgstr ""
+
msgid "Type of chart to display in sparkline"
msgstr ""
@@ -15594,6 +15620,10 @@ msgstr "撤销这个动作"
msgid "Undo?"
msgstr "撤消?"
+#, fuzzy
+msgid "Unexpected HTTP 401 response. Check your credentials."
+msgstr "发生意外错误,请检查日志以了解详细信息"
+
msgid "Unexpected error"
msgstr "意外错误。"
@@ -16500,6 +16530,10 @@ msgstr "是否显示X轴的最小值和最大值"
msgid "Whether to display the min and max values of the Y-axis"
msgstr "是否显示Y轴的最小值和最大值"
+#, fuzzy
+msgid "Whether to display the numbered column"
+msgstr "是否显示趋势线"
+
msgid "Whether to display the numerical values within the cells"
msgstr "是否在单元格内显示数值"
@@ -18106,6 +18140,10 @@ msgstr "升序"
msgid "value descending"
msgstr "降序"
+#, fuzzy
+msgid "valuename"
+msgstr "表名"
+
#, fuzzy
msgid "var"
msgstr "变量"
@@ -18161,25 +18199,8 @@ msgstr ""
msgid "zoom area"
msgstr "缩放面积"
-#, python-brace-format
-msgid ""
-"{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;"
-"\n"
-"\n"
-"/** The classic emailregex.com regex for RFC 5322-compliant emails */\n"
-"export const rfc5322Email =\n"
-" "
-"/^(([^<>()[]\\.,;:s@\"]+(.[^<>()[]\\.,;:s@\"]+)*)|(\".+\"))@(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}])|(([a-zA-Z-0-9]+.)+[a-zA-Z]{2,}))$/;"
-"\n"
-"\n"
-"/** A loose regex that allows Unicode characters, enforces length limits,"
-" and that's about it. */\n"
-"export const unicodeEmail = /^[^s@\"]{1,64}@[^s@]{1,255}$/u;\n"
-"export const idnEmail = unicodeEmail;\n"
-"\n"
-"export const browserEmail: RegExp =\n"
-" /^[a-zA-Z0-9.!#$%&'*+/=?^_"
+msgid "© Layer attribution"
msgstr ""
-msgid "© Layer attribution"
+msgid "№"
msgstr ""
diff --git a/superset/translations/zh_TW/LC_MESSAGES/messages.po b/superset/translations/zh_TW/LC_MESSAGES/messages.po
index 19f8694b271..851a3a6e415 100644
--- a/superset/translations/zh_TW/LC_MESSAGES/messages.po
+++ b/superset/translations/zh_TW/LC_MESSAGES/messages.po
@@ -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-05-31 07:03-0700\n"
+"POT-Creation-Date: 2026-06-05 12:59+0300\n"
"PO-Revision-Date: 2019-01-04 22:19+0800\n"
"Last-Translator: Shao Yu-Lung <be...@gmail.com>\n"
"Language: zh_TW\n"
@@ -26,7 +26,7 @@ msgstr ""
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=utf-8\n"
"Content-Transfer-Encoding: 8bit\n"
-"Generated-By: Babel 2.18.0\n"
+"Generated-By: Babel 2.17.0\n"
msgid ""
"\n"
@@ -1176,6 +1176,10 @@ msgstr "增加新的的顏色格式化器"
msgid "Add new formatter"
msgstr "新增格式化"
+#, fuzzy
+msgid "Add numbered column"
+msgstr "增加計算列"
+
#, fuzzy
msgid "Add or edit display controls"
msgstr "範圍過濾"
@@ -1724,7 +1728,7 @@ msgstr "獲取結構訊息時出錯:%s"
msgid "An error occurred while fetching semantic layer types"
msgstr "獲取可用的CSS模板時出錯"
-#, fuzzy, python-format
+#, fuzzy
msgid "An error occurred while fetching semantic layers"
msgstr "獲取結構訊息時出錯:%s"
@@ -1797,7 +1801,7 @@ msgstr "更新值時出錯。"
msgid "An error occurred while pruning logs "
msgstr "精简日誌時出錯 "
-#, fuzzy, python-format
+#, fuzzy
msgid "An error occurred while refreshing the configuration schema"
msgstr "渲染可視化時發生錯誤:%s"
@@ -4194,6 +4198,12 @@ msgstr "自定義 SQL"
msgid "Custom SQL ad-hoc metrics are not enabled for this dataset"
msgstr "此數據集無法啟用自定義 SQL 即席查詢、"
+msgid "Custom SQL fields cannot be parsed as a single SQL statement."
+msgstr ""
+
+msgid "Custom SQL fields cannot contain set operations."
+msgstr ""
+
msgid "Custom SQL fields cannot contain sub-queries."
msgstr ""
@@ -5627,7 +5637,7 @@ msgid "Duration in ms (100.40008 => 100ms 400µs 80ns)"
msgstr "時長(毫秒)(1.40008 => 1ms 400µs 80ns)"
#, fuzzy
-msgid "Duration in ms (10500 => 0:10.5)"
+msgid "Duration in ms (10500 => 0:00:10.5)"
msgstr "時長(毫秒)(66000 => 1m 6s)"
msgid "Duration in ms (66000 => 1m 6s)"
@@ -9395,7 +9405,7 @@ msgstr "没有發現這樣的列。若要在度量值上篩選,請嘗試自定
msgid "No table columns"
msgstr "没有列"
-#, fuzzy, python-format
+#, fuzzy
msgid "No tasks yet"
msgstr "還没有 %s"
@@ -9492,6 +9502,10 @@ msgstr "未定義"
msgid "Not equal to (≠)"
msgstr "不等於(≠)"
+#, fuzzy
+msgid "Not found"
+msgstr "圖表 %(id)s 没有找到"
+
#, fuzzy
msgid "Not in"
msgstr "Not In"
@@ -10541,6 +10555,12 @@ msgstr "過時"
msgid "Proportional"
msgstr "比例"
+msgid "Public and privately shared sheets"
+msgstr ""
+
+msgid "Publicly shared sheets only"
+msgstr ""
+
msgid "Published"
msgstr "已發布"
@@ -10813,9 +10833,6 @@ msgstr "預過濾"
msgid "Registration date"
msgstr "開始時間"
-msgid "Registration hash"
-msgstr ""
-
msgid "Registration successful"
msgstr ""
@@ -11333,6 +11350,12 @@ msgstr "SQL"
msgid "SQL Lab"
msgstr "SQL 工具箱"
+msgid ""
+"SQL Lab cannot authorise a statement that could not be fully parsed. "
+"Qualify tables explicitly and avoid dynamic SQL inside stored-procedure "
+"or vendor-specific calls."
+msgstr ""
+
#, fuzzy
msgid "SQL Lab queries"
msgstr "已保存查詢"
@@ -15464,6 +15487,9 @@ msgstr "請输入值"
msgid "Type is required"
msgstr "類型是必需的"
+msgid "Type of Google Sheets allowed"
+msgstr ""
+
msgid "Type of chart to display in sparkline"
msgstr ""
@@ -15607,6 +15633,10 @@ msgstr "還原這個動作"
msgid "Undo?"
msgstr "還原?"
+#, fuzzy
+msgid "Unexpected HTTP 401 response. Check your credentials."
+msgstr "發生意外錯誤,請檢查日誌以了解詳細訊息"
+
msgid "Unexpected error"
msgstr "意外錯誤。"
@@ -16513,6 +16543,10 @@ msgstr "是否顯示 X 軸的最小值和最大值"
msgid "Whether to display the min and max values of the Y-axis"
msgstr "是否顯示 Y 軸的最小值和最大值"
+#, fuzzy
+msgid "Whether to display the numbered column"
+msgstr "是否顯示趋势線"
+
msgid "Whether to display the numerical values within the cells"
msgstr "是否在單元格内顯示數值"
@@ -18118,6 +18152,10 @@ msgstr "升序"
msgid "value descending"
msgstr "降序"
+#, fuzzy
+msgid "valuename"
+msgstr "表名"
+
#, fuzzy
msgid "var"
msgstr "變量"
@@ -18173,25 +18211,8 @@ msgstr ""
msgid "zoom area"
msgstr "縮放面積"
-#, python-brace-format
-msgid ""
-"{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$/;"
-"\n"
-"\n"
-"/** The classic emailregex.com regex for RFC 5322-compliant emails */\n"
-"export const rfc5322Email =\n"
-" "
-"/^(([^<>()[]\\.,;:s@\"]+(.[^<>()[]\\.,;:s@\"]+)*)|(\".+\"))@(([[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}])|(([a-zA-Z-0-9]+.)+[a-zA-Z]{2,}))$/;"
-"\n"
-"\n"
-"/** A loose regex that allows Unicode characters, enforces length limits,"
-" and that's about it. */\n"
-"export const unicodeEmail = /^[^s@\"]{1,64}@[^s@]{1,255}$/u;\n"
-"export const idnEmail = unicodeEmail;\n"
-"\n"
-"export const browserEmail: RegExp =\n"
-" /^[a-zA-Z0-9.!#$%&'*+/=?^_"
+msgid "© Layer attribution"
msgstr ""
-msgid "© Layer attribution"
+msgid "№"
msgstr ""