[Screenshotting/Reporting] Remove server side i18n in logs (#124003) (#124924)

* removed unnecessary i18n

* .message instead of .toString in jest snapshots

Co-authored-by: Kibana Machine <42973632+kibanamachine@users.noreply.github.com>
(cherry picked from commit 5310c647aa)
This commit is contained in:
Jean-Louis Leysens 2022-02-08 12:03:34 +01:00 committed by GitHub
parent 51343189a8
commit 708e1ba32e
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
16 changed files with 27 additions and 192 deletions

View file

@ -6,7 +6,6 @@
*/
import { ByteSizeValue } from '@kbn/config-schema';
import { i18n } from '@kbn/i18n';
import { IUiSettingsClient } from 'kibana/server';
import { createEscapeValue } from '../../../../../../../src/plugins/data/common';
import { ReportingConfig } from '../../../';
@ -49,11 +48,7 @@ export const getExportSettings = async (
if (setTimezone === 'Browser') {
// if `Browser`, hardcode it to 'UTC' so the export has data that makes sense
logger.warn(
i18n.translate('xpack.reporting.exportTypes.csv.executeJob.dateFormateSetting', {
defaultMessage:
'Kibana Advanced Setting "{dateFormatTimezone}" is set to "Browser". Dates will be formatted as UTC to avoid ambiguity.',
values: { dateFormatTimezone: 'dateFormat:tz' },
})
`Kibana Advanced Setting "dateFormat:tz" is set to "Browser". Dates will be formatted as UTC to avoid ambiguity.`
);
setTimezone = 'UTC';
}

View file

@ -5,7 +5,6 @@
* 2.0.
*/
import { i18n } from '@kbn/i18n';
import { map, truncate } from 'lodash';
import open from 'opn';
import puppeteer, { ElementHandle, EvaluateFn, Page, SerializableOrJSHandle } from 'puppeteer';
@ -92,10 +91,7 @@ const WAIT_FOR_DELAY_MS: number = 100;
function getDisallowedOutgoingUrlError(interceptedUrl: string) {
return new Error(
i18n.translate('xpack.screenshotting.chromiumDriver.disallowedOutgoingUrl', {
defaultMessage: `Received disallowed outgoing URL: "{interceptedUrl}". Failing the request and closing the browser.`,
values: { interceptedUrl },
})
`Received disallowed outgoing URL: "${interceptedUrl}". Failing the request and closing the browser.`
);
}
@ -323,15 +319,7 @@ export class HeadlessChromiumDriver {
headers,
});
} catch (err) {
logger.error(
i18n.translate(
'xpack.screenshotting.chromiumDriver.failedToCompleteRequestUsingHeaders',
{
defaultMessage: 'Failed to complete a request using headers: {error}',
values: { error: err },
}
)
);
logger.error(`Failed to complete a request using headers: ${err.message}`);
}
} else {
const loggedUrl = isData ? this.truncateUrl(interceptedUrl) : interceptedUrl;
@ -339,12 +327,7 @@ export class HeadlessChromiumDriver {
try {
await client.send('Fetch.continueRequest', { requestId });
} catch (err) {
logger.error(
i18n.translate('xpack.screenshotting.chromiumDriver.failedToCompleteRequest', {
defaultMessage: 'Failed to complete a request: {error}',
values: { error: err },
})
);
logger.error(`Failed to complete a request: ${err.message}`);
}
}

View file

@ -5,7 +5,6 @@
* 2.0.
*/
import { i18n } from '@kbn/i18n';
import { getDataPath } from '@kbn/utils';
import { spawn } from 'child_process';
import del from 'del';
@ -305,10 +304,7 @@ export class HeadlessChromiumDriverFactory {
const uncaughtExceptionPageError$ = Rx.fromEvent<Error>(page, 'pageerror').pipe(
map((err) => {
logger.warn(
i18n.translate('xpack.screenshotting.browsers.chromium.pageErrorDetected', {
defaultMessage: `Reporting encountered an uncaught error on the page that will be ignored: {err}`,
values: { err: err.toString() },
})
`Reporting encountered an uncaught error on the page that will be ignored: ${err.message}`
);
})
);
@ -350,12 +346,7 @@ export class HeadlessChromiumDriverFactory {
getPageExit(browser: Browser, page: Page) {
const pageError$ = Rx.fromEvent<Error>(page, 'error').pipe(
mergeMap((err) => {
return Rx.throwError(
i18n.translate('xpack.screenshotting.browsers.chromium.errorDetected', {
defaultMessage: 'Reporting encountered an error: {err}',
values: { err: err.toString() },
})
);
return Rx.throwError(`Reporting encountered an error: ${err.toString()}`);
})
);
@ -383,9 +374,7 @@ export class HeadlessChromiumDriverFactory {
const exit$ = Rx.fromEvent(browserProcess, 'exit').pipe(
map((code) => {
this.logger.error(`Browser exited abnormally, received code: ${code}`);
return i18n.translate('xpack.screenshotting.diagnostic.browserCrashed', {
defaultMessage: `Browser exited abnormally during startup`,
});
return `Browser exited abnormally during startup`;
})
);
@ -393,9 +382,7 @@ export class HeadlessChromiumDriverFactory {
map((err) => {
this.logger.error(`Browser process threw an error on startup`);
this.logger.error(err as string | Error);
return i18n.translate('xpack.screenshotting.diagnostic.browserErrored', {
defaultMessage: `Browser process threw an error on startup`,
});
return `Browser process threw an error on startup`;
})
);

View file

@ -5,14 +5,8 @@
* 2.0.
*/
import { i18n } from '@kbn/i18n';
export const getChromiumDisconnectedError = () =>
new Error(
i18n.translate('xpack.screenshotting.screencapture.browserWasClosed', {
defaultMessage: 'Browser was closed unexpectedly! Check the server logs for more info.',
})
);
new Error('Browser was closed unexpectedly! Check the server logs for more info.');
export { ChromiumArchivePaths } from './paths';
export type { ConditionalHeaders } from './driver';

View file

@ -5,7 +5,6 @@
* 2.0.
*/
import { i18n } from '@kbn/i18n';
import { cloneDeep, set, upperFirst } from 'lodash';
import type { Logger } from 'src/core/server';
import { getDefaultChromiumSandboxDisabled } from './default_chromium_sandbox_disabled';
@ -27,29 +26,15 @@ export async function createConfig(parentLogger: Logger, config: ConfigType) {
const { os, disableSandbox } = await getDefaultChromiumSandboxDisabled();
const osName = [os.os, os.dist, os.release].filter(Boolean).map(upperFirst).join(' ');
logger.debug(
i18n.translate('xpack.screenshotting.serverConfig.osDetected', {
defaultMessage: `Running on OS: '{osName}'`,
values: { osName },
})
);
logger.debug(`Running on OS: '${osName}'`);
if (disableSandbox === true) {
logger.warn(
i18n.translate('xpack.screenshotting.serverConfig.autoSet.sandboxDisabled', {
defaultMessage: `Chromium sandbox provides an additional layer of protection, but is not supported for {osName} OS. Automatically setting '{configKey}: true'.`,
values: {
configKey: 'xpack.screenshotting.capture.browser.chromium.disableSandbox',
osName,
},
})
`Chromium sandbox provides an additional layer of protection, but is not supported for ${osName} OS. Automatically setting 'xpack.screenshotting.capture.browser.chromium.disableSandbox: true'.`
);
} else {
logger.info(
i18n.translate('xpack.screenshotting.serverConfig.autoSet.sandboxEnabled', {
defaultMessage: `Chromium sandbox provides an additional layer of protection, and is supported for {osName} OS. Automatically enabling Chromium sandbox.`,
values: { osName },
})
`Chromium sandbox provides an additional layer of protection, and is supported for ${osName} OS. Automatically enabling Chromium sandbox.`
);
}

View file

@ -5,7 +5,6 @@
* 2.0.
*/
import { i18n } from '@kbn/i18n';
import apm from 'elastic-apm-node';
import type { Logger } from 'src/core/server';
import type { HeadlessChromiumDriver } from '../browsers';
@ -83,9 +82,7 @@ export const getElementPositionAndAttributes = async (
if (!elementsPositionAndAttributes?.length) {
throw new Error(
i18n.translate('xpack.screenshotting.screencapture.noElements', {
defaultMessage: `An error occurred while reading the page for visualization panels: no panels were found.`,
})
`An error occurred while reading the page for visualization panels: no panels were found.`
);
}
} catch (err) {

View file

@ -5,7 +5,6 @@
* 2.0.
*/
import { i18n } from '@kbn/i18n';
import apm from 'elastic-apm-node';
import type { Logger } from 'src/core/server';
import type { HeadlessChromiumDriver } from '../browsers';
@ -22,11 +21,7 @@ export const getNumberOfItems = async (
const { renderComplete: renderCompleteSelector, itemsCountAttribute } = layout.selectors;
let itemsCount: number;
logger.debug(
i18n.translate('xpack.screenshotting.screencapture.logWaitingForElements', {
defaultMessage: 'waiting for elements or items count attribute; or not found to interrupt',
})
);
logger.debug('waiting for elements or items count attribute; or not found to interrupt');
try {
// the dashboard is using the `itemsCountAttribute` attribute to let us
@ -62,10 +57,7 @@ export const getNumberOfItems = async (
} catch (error) {
logger.error(error);
throw new Error(
i18n.translate('xpack.screenshotting.screencapture.readVisualizationsError', {
defaultMessage: `An error occurred when trying to read the page for visualization panel info: {error}`,
values: { error },
})
`An error occurred when trying to read the page for visualization panel info: ${error.message}`
);
}

View file

@ -5,7 +5,6 @@
* 2.0.
*/
import { i18n } from '@kbn/i18n';
import apm from 'elastic-apm-node';
import type { Logger } from 'src/core/server';
import type { HeadlessChromiumDriver } from '../browsers';
@ -43,10 +42,7 @@ export const getRenderErrors = async (
if (errorsFound?.length) {
logger.warn(
i18n.translate('xpack.screenshotting.screencapture.renderErrorsFound', {
defaultMessage: 'Found {count} error messages. See report object for more information.',
values: { count: errorsFound.length },
})
`Found ${errorsFound.length} error messages. See report object for more information.`
);
}

View file

@ -5,7 +5,6 @@
* 2.0.
*/
import { i18n } from '@kbn/i18n';
import apm from 'elastic-apm-node';
import type { Logger } from 'src/core/server';
import type { HeadlessChromiumDriver } from '../browsers';
@ -33,11 +32,7 @@ export const getScreenshots = async (
logger: Logger,
elementsPositionAndAttributes: ElementsPositionAndAttribute[]
): Promise<Screenshot[]> => {
logger.info(
i18n.translate('xpack.screenshotting.screencapture.takingScreenshots', {
defaultMessage: `taking screenshots`,
})
);
logger.info(`taking screenshots`);
const screenshots: Screenshot[] = [];
@ -60,14 +55,7 @@ export const getScreenshots = async (
span?.end();
}
logger.info(
i18n.translate('xpack.screenshotting.screencapture.screenshotsTaken', {
defaultMessage: `screenshots taken: {numScreenhots}`,
values: {
numScreenhots: screenshots.length,
},
})
);
logger.info(`screenshots taken: ${screenshots.length}`);
return screenshots;
};

View file

@ -271,7 +271,7 @@ describe('Screenshot Observable Pipeline', () => {
},
},
],
"error": [Error: The "wait for elements" phase encountered an error: Error: An error occurred when trying to read the page for visualization panel info: Error: Mock error!],
"error": [Error: The "wait for elements" phase encountered an error: Error: An error occurred when trying to read the page for visualization panel info: Mock error!],
"screenshots": Array [
Object {
"data": Object {
@ -313,7 +313,7 @@ describe('Screenshot Observable Pipeline', () => {
},
},
],
"error": [Error: The "wait for elements" phase encountered an error: Error: An error occurred when trying to read the page for visualization panel info: Error: Mock error!],
"error": [Error: The "wait for elements" phase encountered an error: Error: An error occurred when trying to read the page for visualization panel info: Mock error!],
"screenshots": Array [
Object {
"data": Object {

View file

@ -5,7 +5,6 @@
* 2.0.
*/
import { i18n } from '@kbn/i18n';
import fs from 'fs';
import { promisify } from 'util';
import apm from 'elastic-apm-node';
@ -22,11 +21,7 @@ export const injectCustomCss = async (
layout: Layout
): Promise<void> => {
const span = apm.startSpan('inject_css', 'correction');
logger.debug(
i18n.translate('xpack.screenshotting.screencapture.injectingCss', {
defaultMessage: 'injecting custom css',
})
);
logger.debug('injecting custom css');
const filePath = layout.getCssOverridesPath();
if (!filePath) {
@ -50,10 +45,7 @@ export const injectCustomCss = async (
} catch (err) {
logger.error(err);
throw new Error(
i18n.translate('xpack.screenshotting.screencapture.injectCss', {
defaultMessage: `An error occurred when trying to update Kibana CSS for reporting. {error}`,
values: { error: err },
})
`An error occurred when trying to update Kibana CSS for reporting. ${err.message}`
);
}

View file

@ -5,7 +5,6 @@
* 2.0.
*/
import { i18n } from '@kbn/i18n';
import apm from 'elastic-apm-node';
import type { Logger } from 'src/core/server';
import type { Layout } from 'src/plugins/screenshot_mode/common';
@ -50,12 +49,7 @@ export const openUrl = async (
);
} catch (err) {
logger.error(err);
throw new Error(
i18n.translate('xpack.screenshotting.screencapture.couldntLoadKibana', {
defaultMessage: `An error occurred when trying to open the Kibana URL: {error}`,
values: { error: err },
})
);
throw new Error(`An error occurred when trying to open the Kibana URL: ${err.message}`);
}
span?.end();

View file

@ -5,7 +5,6 @@
* 2.0.
*/
import { i18n } from '@kbn/i18n';
import apm from 'elastic-apm-node';
import type { Logger } from 'src/core/server';
import type { HeadlessChromiumDriver } from '../browsers';
@ -20,11 +19,7 @@ export const waitForRenderComplete = async (
) => {
const span = apm.startSpan('wait_for_render', 'wait');
logger.debug(
i18n.translate('xpack.screenshotting.screencapture.waitingForRenderComplete', {
defaultMessage: 'waiting for rendering to complete',
})
);
logger.debug('waiting for rendering to complete');
return await browser
.evaluate(
@ -74,11 +69,7 @@ export const waitForRenderComplete = async (
logger
)
.then(() => {
logger.debug(
i18n.translate('xpack.screenshotting.screencapture.renderIsComplete', {
defaultMessage: 'rendering is complete',
})
);
logger.debug('rendering is complete');
span?.end();
});

View file

@ -5,7 +5,6 @@
* 2.0.
*/
import { i18n } from '@kbn/i18n';
import apm from 'elastic-apm-node';
import type { Logger } from 'src/core/server';
import type { HeadlessChromiumDriver } from '../browsers';
@ -46,12 +45,7 @@ export const waitForVisualizations = async (
const span = apm.startSpan('wait_for_visualizations', 'wait');
const { renderComplete: renderCompleteSelector } = layout.selectors;
logger.debug(
i18n.translate('xpack.screenshotting.screencapture.waitingForRenderedElements', {
defaultMessage: `waiting for {itemsCount} rendered elements to be in the DOM`,
values: { itemsCount: toEqual },
})
);
logger.debug(`waiting for ${toEqual} rendered elements to be in the DOM`);
try {
await browser.waitFor({
@ -64,10 +58,7 @@ export const waitForVisualizations = async (
} catch (err) {
logger.error(err);
throw new Error(
i18n.translate('xpack.screenshotting.screencapture.couldntFinishRendering', {
defaultMessage: `An error occurred when trying to wait for {count} visualizations to finish rendering. {error}`,
values: { count: toEqual, error: err },
})
`An error occurred when trying to wait for ${toEqual} visualizations to finish rendering. ${err.message}`
);
}

View file

@ -20902,7 +20902,6 @@
"xpack.reporting.errorHandler.unknownError": "不明なエラー",
"xpack.reporting.exportTypes.common.failedToDecryptReportJobDataErrorMessage": "レポートジョブデータの解読に失敗しました。{encryptionKey}が設定されていることを確認してこのレポートを再生成してください。{err}",
"xpack.reporting.exportTypes.common.missingJobHeadersErrorMessage": "ジョブヘッダーがありません",
"xpack.reporting.exportTypes.csv.executeJob.dateFormateSetting": "Kibana の高度な設定「{dateFormatTimezone}」が「ブラウザー」に設定されています。あいまいさを避けるために日付は UTC 形式に変換されます。",
"xpack.reporting.exportTypes.csv.generateCsv.escapedFormulaValues": "CSVには、値がエスケープされた式が含まれる場合があります",
"xpack.reporting.exportTypes.csv.hitIterator.expectedHitsErrorMessage": "次の Elasticsearch からの応答で期待される {hits}{response}",
"xpack.reporting.exportTypes.csv.hitIterator.expectedScrollIdErrorMessage": "次の Elasticsearch からの応答で期待される {scrollId}{response}",
@ -21340,30 +21339,6 @@
"xpack.savedObjectsTagging.validation.description.errorTooLong": "タグ説明は {length} 文字以下で入力してください",
"xpack.savedObjectsTagging.validation.name.errorTooLong": "タグ名は {length} 文字以下で入力してください",
"xpack.savedObjectsTagging.validation.name.errorTooShort": "タグ名は {length} 文字以上で入力してください",
"xpack.screenshotting.browsers.chromium.errorDetected": "レポートでエラーが発生しました:{err}",
"xpack.screenshotting.browsers.chromium.pageErrorDetected": "レポートのページで処理されていないエラーが発生し、無視されるます:{err}",
"xpack.screenshotting.chromiumDriver.disallowedOutgoingUrl": "許可されていない送信URLを受信しました「{interceptedUrl}」。要求が失敗しています。ブラウザーを終了しています。",
"xpack.screenshotting.chromiumDriver.failedToCompleteRequest": "リクエストを完了できませんでした:{error}",
"xpack.screenshotting.chromiumDriver.failedToCompleteRequestUsingHeaders": "ヘッダーを使用してリクエストを完了できませんでした:{error}",
"xpack.screenshotting.diagnostic.browserCrashed": "ブラウザーは起動中に異常終了しました",
"xpack.screenshotting.diagnostic.browserErrored": "ブラウザープロセスは起動中にエラーが発生しました",
"xpack.screenshotting.screencapture.browserWasClosed": "ブラウザーは予期せず終了しました。詳細については、サーバーログを確認してください。",
"xpack.screenshotting.screencapture.couldntFinishRendering": "{count} 件のビジュアライゼーションのレンダリングが完了するのを待つ間にエラーが発生しました。{error}",
"xpack.screenshotting.screencapture.couldntLoadKibana": "Kibana URLを開こうとするときにエラーが発生しました{error}",
"xpack.screenshotting.screencapture.injectCss": "Kibana CSS をレポート用に更新しようとしたときにエラーが発生しました。{error}",
"xpack.screenshotting.screencapture.injectingCss": "カスタム css の投入中",
"xpack.screenshotting.screencapture.logWaitingForElements": "要素または項目のカウント属性を待ち、または見つからないため中断",
"xpack.screenshotting.screencapture.noElements": "ビジュアライゼーションパネルのページを読み取る間にエラーが発生しました:パネルが見つかりませんでした。",
"xpack.screenshotting.screencapture.readVisualizationsError": "ビジュアライゼーションパネル情報のページを読み取ろうとしたときにエラーが発生しました:{error}",
"xpack.screenshotting.screencapture.renderErrorsFound": "{count}件のエラーメッセージが見つかりました。詳細については、レポートオブジェクトを参照してください。",
"xpack.screenshotting.screencapture.renderIsComplete": "レンダリングが完了しました",
"xpack.screenshotting.screencapture.screenshotsTaken": "撮影したスクリーンショット:{numScreenhots}",
"xpack.screenshotting.screencapture.takingScreenshots": "スクリーンショットの撮影中",
"xpack.screenshotting.screencapture.waitingForRenderComplete": "レンダリングの完了を待っています",
"xpack.screenshotting.screencapture.waitingForRenderedElements": "レンダリングされた {itemsCount} 個の要素が DOM に入るのを待っています",
"xpack.screenshotting.serverConfig.autoSet.sandboxDisabled": "Chromiumサンドボックスは保護が強化されていますが、{osName} OSではサポートされていません。自動的に'{configKey}: true'を設定しています。",
"xpack.screenshotting.serverConfig.autoSet.sandboxEnabled": "Chromiumサンドボックスは保護が強化され、{osName} OSでサポートされています。自動的にChromiumサンドボックスを有効にしています。",
"xpack.screenshotting.serverConfig.osDetected": "OSは'{osName}'で実行しています",
"xpack.searchProfiler.advanceTimeDescription": "イテレーターを次のドキュメントに進めるためにかかった時間。",
"xpack.searchProfiler.aggregationProfileTabTitle": "集約プロフィール",
"xpack.searchProfiler.basicLicenseTitle": "基本",

View file

@ -21207,7 +21207,6 @@
"xpack.reporting.errorHandler.unknownError": "未知错误",
"xpack.reporting.exportTypes.common.failedToDecryptReportJobDataErrorMessage": "无法解密报告作业数据。请确保已设置 {encryptionKey},然后重新生成此报告。{err}",
"xpack.reporting.exportTypes.common.missingJobHeadersErrorMessage": "作业标头缺失",
"xpack.reporting.exportTypes.csv.executeJob.dateFormateSetting": "Kibana 高级设置“{dateFormatTimezone}”已设置为“浏览器”。日期将格式化为 UTC 以避免混淆。",
"xpack.reporting.exportTypes.csv.generateCsv.escapedFormulaValues": "CSV 可能包含值已转义的公式",
"xpack.reporting.exportTypes.csv.hitIterator.expectedHitsErrorMessage": "在以下 Elasticsearch 响应中预期 {hits}{response}",
"xpack.reporting.exportTypes.csv.hitIterator.expectedScrollIdErrorMessage": "在以下 Elasticsearch 响应中预期 {scrollId}{response}",
@ -21658,30 +21657,6 @@
"xpack.savedObjectsTagging.validation.description.errorTooLong": "标签描述不能超过 {length} 个字符",
"xpack.savedObjectsTagging.validation.name.errorTooLong": "标签名称不能超过 {length} 个字符",
"xpack.savedObjectsTagging.validation.name.errorTooShort": "标签名称必须至少有 {length} 个字符",
"xpack.screenshotting.browsers.chromium.errorDetected": "报告时遇到错误:{err}",
"xpack.screenshotting.browsers.chromium.pageErrorDetected": "Reporting 在将忽略的页面上遇到未捕获的错误:{err}",
"xpack.screenshotting.chromiumDriver.disallowedOutgoingUrl": "收到禁止的传出 URL“{interceptedUrl}”。请求失败,关闭浏览器。",
"xpack.screenshotting.chromiumDriver.failedToCompleteRequest": "无法完成请求:{error}",
"xpack.screenshotting.chromiumDriver.failedToCompleteRequestUsingHeaders": "无法完成使用 headers 的请求:{error}",
"xpack.screenshotting.diagnostic.browserCrashed": "启动期间浏览器已异常退出",
"xpack.screenshotting.diagnostic.browserErrored": "启动时浏览器进程引发了错误",
"xpack.screenshotting.screencapture.browserWasClosed": "浏览器已意外关闭!有关更多信息,请查看服务器日志。",
"xpack.screenshotting.screencapture.couldntFinishRendering": "尝试等候 {count} 个可视化完成渲染时发生错误。{error}",
"xpack.screenshotting.screencapture.couldntLoadKibana": "尝试打开 Kibana URL 时发生错误:{error}",
"xpack.screenshotting.screencapture.injectCss": "尝试为 Reporting 更新 Kibana CSS 时发生错误。{error}",
"xpack.screenshotting.screencapture.injectingCss": "正在注入定制 css",
"xpack.screenshotting.screencapture.logWaitingForElements": "等候元素或项目计数属性;或未发现要中断",
"xpack.screenshotting.screencapture.noElements": "读取页面以获取可视化面板时发生了错误:未找到任何面板。",
"xpack.screenshotting.screencapture.readVisualizationsError": "尝试读取页面以获取可视化面板信息时发生错误:{error}",
"xpack.screenshotting.screencapture.renderErrorsFound": "找到 {count} 条错误消息。请参阅报告对象了解更多信息。",
"xpack.screenshotting.screencapture.renderIsComplete": "渲染已完成",
"xpack.screenshotting.screencapture.screenshotsTaken": "已捕获的屏幕截图:{numScreenhots}",
"xpack.screenshotting.screencapture.takingScreenshots": "正在捕获屏幕截图",
"xpack.screenshotting.screencapture.waitingForRenderComplete": "正在等候渲染完成",
"xpack.screenshotting.screencapture.waitingForRenderedElements": "正在等候 {itemsCount} 个已渲染元素进入 DOM",
"xpack.screenshotting.serverConfig.autoSet.sandboxDisabled": "Chromium 沙盒提供附加保护层,但不受 {osName} OS 支持。自动设置“{configKey}: true”。",
"xpack.screenshotting.serverConfig.autoSet.sandboxEnabled": "Chromium 沙盒提供附加保护层,受 {osName} OS 支持。自动启用 Chromium 沙盒。",
"xpack.screenshotting.serverConfig.osDetected": "正在以下 OS 上运行:“{osName}”",
"xpack.searchProfiler.advanceTimeDescription": "将迭代器推进至下一文档所用时间。",
"xpack.searchProfiler.aggregationProfileTabTitle": "聚合配置文件",
"xpack.searchProfiler.basicLicenseTitle": "基本级",