From d03af2d389493f323fc57f53336bad4f3da98722 Mon Sep 17 00:00:00 2001 From: Sean McManus Date: Fri, 11 Apr 2025 17:27:30 -0700 Subject: [PATCH 01/25] Fix SIG-?? matching the filter regex. (#13493) --- Extension/src/LanguageServer/extension.ts | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/Extension/src/LanguageServer/extension.ts b/Extension/src/LanguageServer/extension.ts index 53bb833c2..826c18814 100644 --- a/Extension/src/LanguageServer/extension.ts +++ b/Extension/src/LanguageServer/extension.ts @@ -1210,7 +1210,9 @@ async function handleCrashFileRead(crashDirectory: string, crashFile: string, cr signalType = lines[crashStackStartLine] + "\n"; } else { // The signal type may fail to be written. - signalType = "SIG-??\n"; // Intentionally different from SIG-? from cpptools. + // Intentionally different from SIGUNKNOWN from cpptools, + // and not SIG-? to avoid matching the regex in containsFilteredTelemetryData. + signalType = "SIGMISSING\n"; } data = telemetryHeader + signalType; let crashCallStack: string = ""; @@ -1329,11 +1331,6 @@ async function handleCrashFileRead(crashDirectory: string, crashFile: string, cr data += crashCallStack; - // TODO: Remove this in 1.25.1 after it's confirmed that it's not happening. - if (containsFilteredTelemetryData(data)) { - data = "unexpected call stack\n"; - } - logCppCrashTelemetry(data, addressData, crashLog); await util.deleteFile(path.resolve(crashDirectory, crashFile)).catch(logAndReturn.undefined); From 1b2285c7edac00785a53b1e5d7c9a5e966df71fe Mon Sep 17 00:00:00 2001 From: Colen Garoutte-Carson <49173979+Colengms@users.noreply.github.com> Date: Mon, 14 Apr 2025 17:29:09 -0700 Subject: [PATCH 02/25] Fix recursive includes settings UI (#13498) --- Extension/ui/settings.html | 4 ++-- Extension/ui/settings.ts | 18 +++++++++--------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/Extension/ui/settings.html b/Extension/ui/settings.html index a8deeb3c3..53029ed70 100644 --- a/Extension/ui/settings.html +++ b/Extension/ui/settings.html @@ -723,7 +723,7 @@
-
Recursive includes: priority
+
Recursive includes: reduce
Set to always to reduce the number of recursive include paths provided to IntelliSense to only those paths currently referenced by #include statements. This requires first parsing files to determine which files are included. Set to never to provide all recursive include paths to IntelliSense. Reducing the number of recursive include paths may improve IntelliSense performance when a very large number of recursive include paths are involved. Not reducing the number of recursive include paths can improve IntelliSense performance by avoiding the need to parse files to determine which include paths to provide.
@@ -752,7 +752,7 @@
-
Recursive includes: priority
+
Recursive includes: order
The order in which subdirectories under recursive include paths are searched.
diff --git a/Extension/ui/settings.ts b/Extension/ui/settings.ts index ce5a23ab2..4223ddf7e 100644 --- a/Extension/ui/settings.ts +++ b/Extension/ui/settings.ts @@ -285,35 +285,35 @@ class SettingsApp { // Basic settings (document.getElementById(elementId.configName)).value = config.name; - (document.getElementById(elementId.compilerPath)).value = config.compilerPath ? config.compilerPath : ""; + (document.getElementById(elementId.compilerPath)).value = config.compilerPath ?? ""; this.fixKnownCompilerSelection(); (document.getElementById(elementId.compilerArgs)).value = joinEntries(config.compilerArgs); - (document.getElementById(elementId.intelliSenseMode)).value = config.intelliSenseMode ? config.intelliSenseMode : "${default}"; + (document.getElementById(elementId.intelliSenseMode)).value = config.intelliSenseMode ?? "${default}"; (document.getElementById(elementId.includePath)).value = joinEntries(config.includePath); (document.getElementById(elementId.defines)).value = joinEntries(config.defines); (document.getElementById(elementId.cStandard)).value = config.cStandard; (document.getElementById(elementId.cppStandard)).value = config.cppStandard; // Advanced settings - (document.getElementById(elementId.windowsSdkVersion)).value = config.windowsSdkVersion ? config.windowsSdkVersion : ""; + (document.getElementById(elementId.windowsSdkVersion)).value = config.windowsSdkVersion ?? ""; (document.getElementById(elementId.macFrameworkPath)).value = joinEntries(config.macFrameworkPath); (document.getElementById(elementId.compileCommands)).value = joinEntries(config.compileCommands); (document.getElementById(elementId.mergeConfigurations)).checked = config.mergeConfigurations; - (document.getElementById(elementId.configurationProvider)).value = config.configurationProvider ? config.configurationProvider : ""; + (document.getElementById(elementId.configurationProvider)).value = config.configurationProvider ?? ""; (document.getElementById(elementId.forcedInclude)).value = joinEntries(config.forcedInclude); - (document.getElementById(elementId.dotConfig)).value = config.dotConfig ? config.dotConfig : ""; + (document.getElementById(elementId.dotConfig)).value = config.dotConfig ?? ""; if (config.recursiveIncludes) { - (document.getElementById(elementId.recursiveIncludesReduce)).value = config.recursiveIncludes.reduce; - (document.getElementById(elementId.recursiveIncludesPriority)).value = config.recursiveIncludes.priority; - (document.getElementById(elementId.recursiveIncludesOrder)).value = config.recursiveIncludes.order; + (document.getElementById(elementId.recursiveIncludesReduce)).value = config.recursiveIncludes.reduce ?? "${default}"; + (document.getElementById(elementId.recursiveIncludesPriority)).value = config.recursiveIncludes.priority ?? "${default}"; + (document.getElementById(elementId.recursiveIncludesOrder)).value = config.recursiveIncludes.order ?? "${default}"; } if (config.browse) { (document.getElementById(elementId.browsePath)).value = joinEntries(config.browse.path); (document.getElementById(elementId.limitSymbolsToIncludedHeaders)).checked = config.browse.limitSymbolsToIncludedHeaders && config.browse.limitSymbolsToIncludedHeaders; - (document.getElementById(elementId.databaseFilename)).value = config.browse.databaseFilename ? config.browse.databaseFilename : ""; + (document.getElementById(elementId.databaseFilename)).value = config.browse.databaseFilename ?? ""; } else { (document.getElementById(elementId.browsePath)).value = ""; (document.getElementById(elementId.limitSymbolsToIncludedHeaders)).checked = false; From 7522617143e04f120afc541a44441fe3538a8e90 Mon Sep 17 00:00:00 2001 From: Sean McManus Date: Wed, 16 Apr 2025 10:59:11 -0700 Subject: [PATCH 03/25] Fix the Debug button disappearing. (#13492) --- Extension/src/LanguageServer/client.ts | 4 ---- 1 file changed, 4 deletions(-) diff --git a/Extension/src/LanguageServer/client.ts b/Extension/src/LanguageServer/client.ts index b09c4c408..92107158a 100644 --- a/Extension/src/LanguageServer/client.ts +++ b/Extension/src/LanguageServer/client.ts @@ -1892,10 +1892,6 @@ export class DefaultClient implements Client { if (document.uri.scheme === "file") { const uri: string = document.uri.toString(); openFileVersions.set(uri, document.version); - void SessionState.buildAndDebugIsSourceFile.set(util.isCppOrCFile(document.uri)); - void SessionState.buildAndDebugIsFolderOpen.set(util.isFolderOpen(document.uri)); - } else { - void SessionState.buildAndDebugIsSourceFile.set(false); } } From ce67c4c146623b50ff22440cd7e09d424377c260 Mon Sep 17 00:00:00 2001 From: Sean McManus Date: Wed, 16 Apr 2025 12:21:06 -0700 Subject: [PATCH 04/25] Update loc strings for 1.25.1 (#13515) * Localization - Translated Strings * Update loc strings. Add more locked comments. --- Extension/i18n/chs/package.i18n.json | 2 +- .../i18n/chs/src/nativeStrings.i18n.json | 2 +- Extension/i18n/chs/ui/settings.html.i18n.json | 4 +-- Extension/i18n/cht/package.i18n.json | 2 +- .../i18n/cht/src/nativeStrings.i18n.json | 2 +- Extension/i18n/cht/ui/settings.html.i18n.json | 4 +-- Extension/i18n/csy/package.i18n.json | 2 +- .../i18n/csy/src/nativeStrings.i18n.json | 2 +- Extension/i18n/csy/ui/settings.html.i18n.json | 4 +-- Extension/i18n/deu/package.i18n.json | 2 +- .../i18n/deu/src/nativeStrings.i18n.json | 2 +- Extension/i18n/deu/ui/settings.html.i18n.json | 4 +-- Extension/i18n/esn/package.i18n.json | 2 +- .../i18n/esn/src/nativeStrings.i18n.json | 2 +- Extension/i18n/esn/ui/settings.html.i18n.json | 4 +-- Extension/i18n/fra/package.i18n.json | 8 ++--- .../i18n/fra/src/nativeStrings.i18n.json | 2 +- Extension/i18n/fra/ui/settings.html.i18n.json | 4 +-- Extension/i18n/ita/package.i18n.json | 2 +- .../i18n/ita/src/nativeStrings.i18n.json | 2 +- Extension/i18n/ita/ui/settings.html.i18n.json | 4 +-- Extension/i18n/jpn/package.i18n.json | 2 +- .../i18n/jpn/src/nativeStrings.i18n.json | 2 +- Extension/i18n/jpn/ui/settings.html.i18n.json | 4 +-- Extension/i18n/kor/package.i18n.json | 4 +-- .../i18n/kor/src/nativeStrings.i18n.json | 2 +- Extension/i18n/kor/ui/settings.html.i18n.json | 4 +-- Extension/i18n/plk/package.i18n.json | 2 +- .../i18n/plk/src/nativeStrings.i18n.json | 2 +- Extension/i18n/plk/ui/settings.html.i18n.json | 4 +-- Extension/i18n/ptb/package.i18n.json | 2 +- Extension/i18n/ptb/ui/settings.html.i18n.json | 4 +-- Extension/i18n/rus/package.i18n.json | 2 +- .../i18n/rus/src/nativeStrings.i18n.json | 2 +- Extension/i18n/rus/ui/settings.html.i18n.json | 4 +-- Extension/i18n/trk/package.i18n.json | 2 +- .../i18n/trk/src/nativeStrings.i18n.json | 2 +- Extension/i18n/trk/ui/settings.html.i18n.json | 4 +-- Extension/package.nls.json | 29 ++++++++++++++----- Extension/src/nativeStrings.json | 5 +++- 40 files changed, 80 insertions(+), 64 deletions(-) diff --git a/Extension/i18n/chs/package.i18n.json b/Extension/i18n/chs/package.i18n.json index f3e18dbd5..61cad77d5 100644 --- a/Extension/i18n/chs/package.i18n.json +++ b/Extension/i18n/chs/package.i18n.json @@ -254,7 +254,7 @@ "c_cpp.configuration.hover.description": "如果禁用,则语言服务器不再提供悬停详细信息。", "c_cpp.configuration.vcpkg.enabled.markdownDescription": "为 [vcpkg 依存关系管理器](https://aka.ms/vcpkg/) 启用集成服务。", "c_cpp.configuration.addNodeAddonIncludePaths.markdownDescription": "当来自 `nan` 和 `node-addon-api` 的包含路径为依赖项时,请将其添加。", - "c_cpp.configuration.copilotHover.markdownDescription": "如果 `disabled`,则悬停时不会显示任何 Copilot 信息。", + "c_cpp.configuration.copilotHover.markdownDescription": "如果为 `disabled`,则悬停时不会显示“生成 Copilot 摘要”选项。", "c_cpp.configuration.renameRequiresIdentifier.markdownDescription": "如果为 `true`,则“重命名符号”将需要有效的 C/C++ 标识符。", "c_cpp.configuration.autocompleteAddParentheses.markdownDescription": "如果为 `true`,则自动完成将在函数调用后自动添加 `(` ,在这种情况下,也可以添加 `)` ,具体取决于 `#editor.autoClosingBrackets#` 设置的值。", "c_cpp.configuration.filesExclude.markdownDescription": "为排除文件夹(以及文件 - 如果更改了 `#C_Cpp.exclusionPolicy#`)配置 glob 模式。这些特定于 C/C++ 扩展,并且是 `#files.exclude#` 的补充,但与 `#files.exclude#` 不同,它们也适用于当前工作区文件夹之外的路径,并且不会从资源管理器视图中删除。详细了解 [glob 模式](https://code.visualstudio.com/docs/editor/codebasics#_advanced-search-options)。", diff --git a/Extension/i18n/chs/src/nativeStrings.i18n.json b/Extension/i18n/chs/src/nativeStrings.i18n.json index 1b8845e6c..4b591672c 100644 --- a/Extension/i18n/chs/src/nativeStrings.i18n.json +++ b/Extension/i18n/chs/src/nativeStrings.i18n.json @@ -319,5 +319,5 @@ "file_not_found_in_path2": "在 compile_commands.json 文件中找不到 \"{0}\"。此文件将改用文件夹“{1}”中的 c_cpp_properties.json 中包含的 \"includePath\"。", "copilot_hover_link": "生成 Copilot 摘要", "browse_path_not_found": "无法为不存在的文件夹 {0} 中的文件编制索引", - "license_terms": "C/C++ 扩展只能与 Microsoft Visual Studio、Visual Studio for Mac、Visual Studio Code、Azure DevOps、Team Foundation Server 以及后续的 Microsoft 产品和服务一起使用,以开发和测试您的应用程序。" + "license_terms": "C/C++ 扩展只能用于 Microsoft Visual Studio、Visual Studio for Mac、Visual Studio Code、Azure DevOps、Team Foundation Server 以及后续的 Microsoft 产品和服务,以开发和测试您的应用程序。" } \ No newline at end of file diff --git a/Extension/i18n/chs/ui/settings.html.i18n.json b/Extension/i18n/chs/ui/settings.html.i18n.json index 60447dbad..f5fbbfbba 100644 --- a/Extension/i18n/chs/ui/settings.html.i18n.json +++ b/Extension/i18n/chs/ui/settings.html.i18n.json @@ -67,10 +67,10 @@ "limit.symbols.checkbox": "如果为 {0} (或已勾选),则标记分析器将仅分析在 {1} 中由源文件直接或间接包含的代码文件。如果为 {2} (或未选中),标记分析器将分析在 {3} 列表内指定路径中找到的所有代码文件。", "database.filename": "浏览: 数据库文件名", "database.filename.description": "所生成的符号数据库的路径。这指示扩展将标记分析器的符号数据库保存在工作区默认存储位置以外的其他位置。如果指定了相对路径,则它将相对于工作区的默认存储位置(而不是工作区文件夹本身)。{0} 变量可用于指定相对于工作区文件夹的路径(例如 {1})。", - "recursiveIncludes.reduce": "递归包括: 优先级", + "recursiveIncludes.reduce": "Recursive includes: reduce", "recursiveIncludes.reduce.description": "设置为 {0} 可将提供给 IntelliSense 的递归包含路径数减少到仅限当前由 #include 语句引用的路径。这需要首先分析文件以确定包含哪些文件。设置为 {1} 可将所有递归包含路径提供给 IntelliSense。当涉及到大量递归包含路径时,减少递归包含路径的数量可能会提高 IntelliSense 性能。如果不减少递归包含路径的数量,则可以通过避免需要分析文件以确定要提供的包含路径来提高 IntelliSense 性能。", "recursiveIncludes.priority": "递归包括: 优先级", "recursiveIncludes.priority.description": "递归包含路径的优先级。如果设置为 {0},则将在系统包含路径之前搜索递归包含路径。如果设置为 {1},则将在系统包含路径之后搜索递归包含路径。", - "recursiveIncludes.order": "递归包括: 优先级", + "recursiveIncludes.order": "Recursive includes: order", "recursiveIncludes.order.description": "搜索递归包含路径下子目录的顺序。" } \ No newline at end of file diff --git a/Extension/i18n/cht/package.i18n.json b/Extension/i18n/cht/package.i18n.json index e0f4d9198..f212034ec 100644 --- a/Extension/i18n/cht/package.i18n.json +++ b/Extension/i18n/cht/package.i18n.json @@ -254,7 +254,7 @@ "c_cpp.configuration.hover.description": "如果停用,語言伺服器將不再提供暫留詳細資料。", "c_cpp.configuration.vcpkg.enabled.markdownDescription": "啟用 [vcpkg 相依性管理員](https://aka.ms/vcpkg/) 的整合服務。", "c_cpp.configuration.addNodeAddonIncludePaths.markdownDescription": "當 `nan` 和 `node-addon-api` 為相依性時,從中新增 include 路徑。", - "c_cpp.configuration.copilotHover.markdownDescription": "如果`disabled`,則暫留中將不會顯示 Copilot 資訊。", + "c_cpp.configuration.copilotHover.markdownDescription": "如果 `disabled`,暫留時將不會顯示 [產生 Copilot 摘要] 選項。", "c_cpp.configuration.renameRequiresIdentifier.markdownDescription": "若為 `true`,則「重新命名符號」需要有效的 C/C++ 識別碼。", "c_cpp.configuration.autocompleteAddParentheses.markdownDescription": "若為 `true`,自動完成將會在函式呼叫之後自動新增 `(`,在這種情況下也可能會新增 `)`,取決於 `editor.autoClosingBrackets` 設定的值。", "c_cpp.configuration.filesExclude.markdownDescription": "設定 Glob 模式以排除資料夾 (若變更 `#C_Cpp.exclusionPolicy#`,則也會排除檔案)。這些模式為 C/C++ 延伸模組所特有,且是對 `#files.exclude#` 的外加,但與 `#files.exclude#` 不同的是,它們也適用於目前工作區資料夾以外的路徑,並且不會將其從總管檢視中移除。深入了解 [Glob 模式](https://code.visualstudio.com/docs/editor/codebasics#_advanced-search-options)。", diff --git a/Extension/i18n/cht/src/nativeStrings.i18n.json b/Extension/i18n/cht/src/nativeStrings.i18n.json index a7e58aa98..2ce9c171f 100644 --- a/Extension/i18n/cht/src/nativeStrings.i18n.json +++ b/Extension/i18n/cht/src/nativeStrings.i18n.json @@ -319,5 +319,5 @@ "file_not_found_in_path2": "在 compile_commands.json 檔案中找不到 \"{0}\"。將對此檔案改用資料夾 '{1}' 中 c_cpp_properties.json 的 'includePath'。", "copilot_hover_link": "產生 Copilot 摘要", "browse_path_not_found": "無法為以下不存在的資料夾中的檔案編製索引:{0}", - "license_terms": "C/C++ 擴展只能與 Microsoft Visual Studio、Visual Studio for Mac、Visual Studio Code、Azure DevOps、Team Foundation Server 以及後續的 Microsoft 產品和服務一起使用,以開發和測試您的應用程式。" + "license_terms": "C/C++ 擴充功能僅能與 Microsoft Visual Studio、Visual Studio for Mac、Visual Studio Code、Azure DevOps、Team Foundation Server 及後續的 Microsoft 產品與服務搭配使用,以開發和測試您的應用程式。" } \ No newline at end of file diff --git a/Extension/i18n/cht/ui/settings.html.i18n.json b/Extension/i18n/cht/ui/settings.html.i18n.json index da88a578d..f5b50e708 100644 --- a/Extension/i18n/cht/ui/settings.html.i18n.json +++ b/Extension/i18n/cht/ui/settings.html.i18n.json @@ -67,10 +67,10 @@ "limit.symbols.checkbox": "若為 {0} (或已選取),標籤剖析器只會剖析 {1} 中原始程式檔直接或間接包含的程式碼檔。若為 {2} (或未選取),標籤剖析器會剖析在 {3} 清單中的指定路徑找到的所有程式碼檔。", "database.filename": "瀏覽: 資料庫檔案名稱", "database.filename.description": "產生符號資料庫路徑。這會指示延伸模組將標籤剖析器的符號資料庫儲存在工作區預設儲存位置以外的某處。如果指定了相對路徑,就會是相對於工作區預設儲存位置 (非工作區資料夾本身) 的路徑。{0} 變數可用於指定相對於工作區資料夾的路徑 (例如 {1})。", - "recursiveIncludes.reduce": "遞迴包含: 優先順序", + "recursiveIncludes.reduce": "Recursive includes: reduce", "recursiveIncludes.reduce.description": "設定為 {0},可使 IntelliSense 僅提供目前由 #include 陳述式參考的遞迴包含路徑。這需要先剖析檔案,以確定包含哪些檔案。設定為 {1} 以將所有遞迴包含路徑提供給 IntelliSense。當涉及非常大量的遞迴包含路徑時,減少遞迴包含路徑數目可能會改善 IntelliSense 的效能。不減少遞迴包含路徑的數量,可避免需要剖析檔案以決定要提供哪些包含路徑,從而 IntelliSense 效能。", "recursiveIncludes.priority": "遞迴包含: 優先順序", "recursiveIncludes.priority.description": "遞迴包含路徑的優先順序。如果設定為 {0},則會在系統包含路徑之前搜尋遞迴包含路徑。如果設定為 {1},則會在系統包含路徑之後搜尋遞迴包含路徑。", - "recursiveIncludes.order": "遞迴包含: 優先順序", + "recursiveIncludes.order": "Recursive includes: order", "recursiveIncludes.order.description": "搜尋遞迴包含路徑下子目錄的順序。" } \ No newline at end of file diff --git a/Extension/i18n/csy/package.i18n.json b/Extension/i18n/csy/package.i18n.json index c15422afd..6176c3c95 100644 --- a/Extension/i18n/csy/package.i18n.json +++ b/Extension/i18n/csy/package.i18n.json @@ -254,7 +254,7 @@ "c_cpp.configuration.hover.description": "Pokud je tato možnost zakázaná, podrobnosti o najetí myší už nebude poskytovat jazykový server.", "c_cpp.configuration.vcpkg.enabled.markdownDescription": "Povolte integrační služby pro [správce závislostí vcpkg](https://aka.ms/vcpkg/).", "c_cpp.configuration.addNodeAddonIncludePaths.markdownDescription": "Pokud existují závislosti, přidejte cesty pro zahrnuté soubory z `nan` a `node-addon-api`.", - "c_cpp.configuration.copilotHover.markdownDescription": "Pokud je tato možnost `disabled`, v hoveru se nezobrazí žádné informace Copilot.", + "c_cpp.configuration.copilotHover.markdownDescription": "Pokud je zakázáno (`disabled`), při najetí myší se nezobrazí možnost Vygenerovat souhrn Copilot.", "c_cpp.configuration.renameRequiresIdentifier.markdownDescription": "Když se tato hodnota nastaví na `true`, operace Přejmenovat symbol bude vyžadovat platný identifikátor C/C++.", "c_cpp.configuration.autocompleteAddParentheses.markdownDescription": "Pokud je hodnota `true`, automatické dokončování automaticky přidá za volání funkcí znak `(`. V takovém případě se může přidat i znak `)`, což záleží na hodnotě nastavení `#editor.autoClosingBrackets#`.", "c_cpp.configuration.filesExclude.markdownDescription": "Nakonfigurujte vzory glob pro vyloučení složek (a souborů, pokud se změní `#C_Cpp.exclusionPolicy#`). Ty jsou specifické pro rozšíření C/C++ a doplňují `#files.exclude#`, ale na rozdíl od `#files.exclude#` platí také pro cesty mimo aktuální složku pracovního prostoru a neodebírají se ze zobrazení Průzkumníka. Přečtěte si další informace o [vzorech glob](https://code.visualstudio.com/docs/editor/codebasics#_advanced-search-options).", diff --git a/Extension/i18n/csy/src/nativeStrings.i18n.json b/Extension/i18n/csy/src/nativeStrings.i18n.json index ed7b38f41..c09c35c9f 100644 --- a/Extension/i18n/csy/src/nativeStrings.i18n.json +++ b/Extension/i18n/csy/src/nativeStrings.i18n.json @@ -319,5 +319,5 @@ "file_not_found_in_path2": "V souborech compile_commands.json se nepovedlo najít {0}. Pro tento soubor se místo toho použije includePath ze souboru c_cpp_properties.json ve složce {1}.", "copilot_hover_link": "Vygenerovat souhrn Copilotu", "browse_path_not_found": "Nelze indexovat soubory z neexistující složky: {0}", - "license_terms": "Rozšíření C/C++ lze použít pouze s produkty a službami Microsoft Visual Studio, Visual Studio for Mac, Visual Studio Code, Azure DevOps, Team Foundation Server a nástupnickými produkty a službami společnosti Microsoft k vývoji a testování vašich aplikací." + "license_terms": "Rozšíření C/C++ lze používat pouze s těmito produkty a službami pro vývoj a testování aplikací a nástupci těchto produktů a služeb od Microsoftu: Microsoft Visual Studio, Visual Studio pro Mac, Visual Studio Code, Azure DevOps a Team Foundation Server." } \ No newline at end of file diff --git a/Extension/i18n/csy/ui/settings.html.i18n.json b/Extension/i18n/csy/ui/settings.html.i18n.json index 4724e9840..616896bec 100644 --- a/Extension/i18n/csy/ui/settings.html.i18n.json +++ b/Extension/i18n/csy/ui/settings.html.i18n.json @@ -67,10 +67,10 @@ "limit.symbols.checkbox": "Když se nastaví na {0} (nebo zaškrtne), analyzátor značek bude parsovat jen soubory kódů, které přímo nebo nepřímo zahrnul zdrojový soubor v {1}. Když se nastaví na {2} (nebo nezaškrtne), analyzátor značek bude parsovat všechny soubory kódů nalezené na cestách zadaných v seznamu {3}.", "database.filename": "Procházení: název souboru databáze", "database.filename.description": "Cesta k vygenerované databázi symbolů. Na základě této možnosti bude rozšíření ukládat databázi symbolů analyzátoru značek někam jinam než do výchozího umístění úložiště pracovního prostoru. Pokud se zadá relativní cesta, bude relativní vzhledem k výchozímu umístění úložiště pracovního prostoru, nikoli k samotné složce pracovního prostoru. Pokud chcete zadat cestu relativní ke složce pracovního prostoru (třeba {1}), dá se použít proměnná {0}.", - "recursiveIncludes.reduce": "Rekurzivní soubory k zahrnutí: priorita", + "recursiveIncludes.reduce": "Recursive includes: reduce", "recursiveIncludes.reduce.description": "Nastavením na {0} se počet cest rekurzivních souborů k zahrnutí poskytovaných funkci IntelliSense vždy sníží pouze na ty cesty, na které aktuálně odkazují příkazy #include. K tomu je potřeba nejdříve analyzovat soubory a zjistit, které soubory jsou zahrnuty. Nastavením na {1} poskytnete funkci IntelliSense všechny cesty rekurzivních souborů k zahrnutí. Snížení počtu cest rekurzivních souborů k zahrnutí může zlepšit výkon funkce IntelliSense, pokud se jedná o velmi velký počet cest souborů k zahrnutí. Nesnižování počtu cest rekurzivních souborů k zahrnutí může zlepšit výkon funkce IntelliSense, protože se vyhnete nutnosti analyzovat soubory a určit, které cesty souborů k zahrnutí je třeba poskytnout.", "recursiveIncludes.priority": "Rekurzivní soubory k zahrnutí: priorita", "recursiveIncludes.priority.description": "Priorita cest rekurzivních souborů zahrnutí Pokud je nastavená hodnota {0}, budou se cesty rekurzivních souborů k zahrnutí prohledávat před cestami systémových souborů k zahrnutí. Pokud je nastavená hodnota {1}, budou se cesty rekurzivních souborů k zahrnutí prohledávat po cestách systémových souborů k zahrnutí.", - "recursiveIncludes.order": "Rekurzivní soubory k zahrnutí: priorita", + "recursiveIncludes.order": "Recursive includes: order", "recursiveIncludes.order.description": "Pořadí, ve kterém se prohledávají podadresáře v cestách rekurzivních souborů k zahrnutí" } \ No newline at end of file diff --git a/Extension/i18n/deu/package.i18n.json b/Extension/i18n/deu/package.i18n.json index 7f986265a..e6cab6600 100644 --- a/Extension/i18n/deu/package.i18n.json +++ b/Extension/i18n/deu/package.i18n.json @@ -254,7 +254,7 @@ "c_cpp.configuration.hover.description": "Wenn diese Option deaktiviert ist, werden die Hoverdetails nicht mehr vom Sprachserver bereitgestellt.", "c_cpp.configuration.vcpkg.enabled.markdownDescription": "Hiermit aktivieren Sie Integrationsdienste für den [vcpkg-Abhängigkeitsmanager](https://aka.ms/vcpkg/).", "c_cpp.configuration.addNodeAddonIncludePaths.markdownDescription": "Fügen Sie Includepfade aus `nan` und `node-addon-api` hinzu, wenn es sich um Abhängigkeiten handelt.", - "c_cpp.configuration.copilotHover.markdownDescription": "Wenn `disabled` festgelegt ist, werden beim Daraufzeigen mit der Maus keine Copilot-Informationen angezeigt.", + "c_cpp.configuration.copilotHover.markdownDescription": "Wenn `disabled`, wird beim darauf zeigen keine Option „Copilot-Zusammenfassung generieren“ angezeigt.", "c_cpp.configuration.renameRequiresIdentifier.markdownDescription": "Wenn `true` festgelegt ist, erfordert 'Symbol umbenennen' einen gültigen C/C++-Bezeichner.", "c_cpp.configuration.autocompleteAddParentheses.markdownDescription": "Wenn `true` festgelegt ist, fügt AutoVervollständigen automatisch `(` nach Funktionsaufrufen hinzu. In diesem Fall kann auch `)` in Abhängigkeit vom Wert der Einstellung `#editor.autoClosingBrackets#` hinzugefügt werden.", "c_cpp.configuration.filesExclude.markdownDescription": "Konfigurieren Sie Globmuster zum Ausschließen von Ordnern (und Dateien, wenn `#C_Cpp.exclusionPolicy#` geändert wird). Diese sind spezifisch für die C/C++-Erweiterung und gelten zusätzlich zu `#files.exclude#`, aber im Gegensatz zu `#files.exclude#` gelten sie auch für Pfade außerhalb des aktuellen Arbeitsbereichsordners und werden nicht aus der Explorer-Ansicht entfernt. Weitere Informationen zu [Globmustern](https://code.visualstudio.com/docs/editor/codebasics#_advanced-search-options).", diff --git a/Extension/i18n/deu/src/nativeStrings.i18n.json b/Extension/i18n/deu/src/nativeStrings.i18n.json index 296d0abc3..8240c0e3c 100644 --- a/Extension/i18n/deu/src/nativeStrings.i18n.json +++ b/Extension/i18n/deu/src/nativeStrings.i18n.json @@ -319,5 +319,5 @@ "file_not_found_in_path2": "„{0}“ wurde in compile_commands.json-Dateien nicht gefunden. Stattdessen wird „includePath“ aus „c_cpp_properties.json“ im Ordner „{1}“ für diese Datei verwendet.", "copilot_hover_link": "Copilot-Zusammenfassung generieren", "browse_path_not_found": "Dateien aus einem nicht vorhandenen Ordner können nicht indiziert werden: {0}", - "license_terms": "Die C/C++-Erweiterung kann nur mit Microsoft Visual Studio, Visual Studio für Mac, Visual Studio Code, Azure DevOps, Team Foundation Server und Nachfolgeprodukten und -diensten von Microsoft verwendet werden, um Ihre Anwendungen zu entwickeln und zu testen." + "license_terms": "Die C/C++-Erweiterung darf nur mit Microsoft Visual Studio, Visual Studio für Mac, Visual Studio Code, Azure DevOps, Team Foundation Server und nachfolgenden Produkten und Diensten von Microsoft verwendet werden, um Ihre Anwendungen zu entwickeln und zu testen." } \ No newline at end of file diff --git a/Extension/i18n/deu/ui/settings.html.i18n.json b/Extension/i18n/deu/ui/settings.html.i18n.json index 8ee8dedd1..948077bfe 100644 --- a/Extension/i18n/deu/ui/settings.html.i18n.json +++ b/Extension/i18n/deu/ui/settings.html.i18n.json @@ -67,10 +67,10 @@ "limit.symbols.checkbox": "Wenn {0} (oder aktiviert) ist, analysiert der Tagparser nur Codedateien, die direkt oder indirekt von einer Quelldatei in {1} eingeschlossen wurden. Wenn {2} (oder nicht aktiviert) ist, analysiert der Tagparser alle Codedateien, die in den in der {3} Liste angegebenen Pfaden gefunden wurden.", "database.filename": "Durchsuchen: Datenbankdateiname", "database.filename.description": "Der Pfad zur generierten Symboldatenbank. Hiermit wird die Erweiterung angewiesen, die Symboldatenbank des Tagparsers an einem anderen Speicherort als dem Standardspeicherort des Arbeitsbereichs zu speichern. Bei Angabe eines relativen Pfads wird dieser relativ zum Standardspeicherort des Arbeitsbereichs und nicht zum Arbeitsbereichsordner selbst erstellt. Die Variable „{0}“ kann verwendet werden, um einen Pfad relativ zum Arbeitsbereichsordner (Beispiel: {1}) anzugeben.", - "recursiveIncludes.reduce": "„Rekursiv“ umfasst: Priorität", + "recursiveIncludes.reduce": "Recursive includes: reduce", "recursiveIncludes.reduce.description": "Legen Sie diese Option auf „{0}“ fest, um die Anzahl der rekursiven Includepfade, die für IntelliSense bereitgestellt werden, auf die Pfade zu verringern, auf die derzeit von #include-Anweisungen verwiesen wird. Dazu müssen zuerst die Dateien analysiert werden, um zu bestimmen, welche Dateien eingeschlossen werden. Legen Sie diese Option auf „{1}“ fest, um alle rekursiven Includepfade für IntelliSense bereitzustellen. Wenn Sie die Anzahl rekursiver Includepfade verringern, kann sich die Leistung von IntelliSense verbessern, wenn eine sehr große Anzahl rekursiver Includepfade betroffen ist. Wenn Sie die Anzahl rekursiver Includepfade nicht verringern, kann die Leistung von IntelliSense verbessert werden, da die Dateien nicht analysiert werden müssen, um zu bestimmen, welche Includepfade bereitgestellt werden sollen.", "recursiveIncludes.priority": "„Rekursiv“ umfasst: Priorität", "recursiveIncludes.priority.description": "Die Priorität rekursiver Includepfade. Wenn sie auf „{0}“ festgelegt ist, werden die rekursiven Includepfade vor den systemseitigen Includepfaden durchsucht. Wenn sie auf „{1}“ festgelegt ist, werden die rekursiven Includepfade nach den systemseitigen Includepfaden durchsucht.", - "recursiveIncludes.order": "„Rekursiv“ umfasst: Priorität", + "recursiveIncludes.order": "Recursive includes: order", "recursiveIncludes.order.description": "Die Reihenfolge, in der Unterverzeichnisse unter rekursiven Includepfaden durchsucht werden." } \ No newline at end of file diff --git a/Extension/i18n/esn/package.i18n.json b/Extension/i18n/esn/package.i18n.json index 1ce0dce30..fbebe20c1 100644 --- a/Extension/i18n/esn/package.i18n.json +++ b/Extension/i18n/esn/package.i18n.json @@ -254,7 +254,7 @@ "c_cpp.configuration.hover.description": "Si se deshabilita, el servidor de lenguaje ya no proporciona detalles al mantener el puntero.", "c_cpp.configuration.vcpkg.enabled.markdownDescription": "Habilita los servicios de integración para el [administrador de dependencias de vcpkgs](https://aka.ms/vcpkg/).", "c_cpp.configuration.addNodeAddonIncludePaths.markdownDescription": "Agrega rutas de acceso de inclusión de `nan` y `node-addon-api` cuando sean dependencias.", - "c_cpp.configuration.copilotHover.markdownDescription": "Si está `disabled`, no aparecerá información de Copilot al mantener el puntero.", + "c_cpp.configuration.copilotHover.markdownDescription": "Si se establece en `disabled`, no aparecerá la opción 'Generar resumen de Copilot' al mantener el puntero por encima.", "c_cpp.configuration.renameRequiresIdentifier.markdownDescription": "Si es `true`, 'Cambiar nombre de símbolo' requerirá un identificador de C/C++ válido.", "c_cpp.configuration.autocompleteAddParentheses.markdownDescription": "Si es `true`, la opción de autocompletar agregará `(` de forma automática después de las llamadas a funciones, en cuyo caso puede que también se agregue `)`, en función del valor de la configuración de `editor.autoClosingBrackets`.", "c_cpp.configuration.filesExclude.markdownDescription": "Configure patrones globales para excluir carpetas (y archivos si se cambia `#C_Cpp.exclusionPolicy#`). Son específicos de la extensión de C/C++ y se agregan a `#files.exclude#`, pero a diferencia de `#files.exclude#`, también se aplican a las rutas de acceso fuera de la carpeta del área de trabajo actual y no se quitan de la vista del Explorador. Obtenga información sobre [patrones globales](https://code.visualstudio.com/docs/editor/codebasics#_advanced-search-options).", diff --git a/Extension/i18n/esn/src/nativeStrings.i18n.json b/Extension/i18n/esn/src/nativeStrings.i18n.json index ea67e74e4..b66ee6a34 100644 --- a/Extension/i18n/esn/src/nativeStrings.i18n.json +++ b/Extension/i18n/esn/src/nativeStrings.i18n.json @@ -319,5 +319,5 @@ "file_not_found_in_path2": "\"{0}\" no se encuentra en compile_commands.json archivos. ''includePath'' de c_cpp_properties.json de la carpeta ''{1}'' se usará en su lugar para este archivo.", "copilot_hover_link": "Generar resumen de Copilot", "browse_path_not_found": "No se pueden indexar archivos de una carpeta inexistente: {0}", - "license_terms": "La extensión C/C++ solo se puede usar con Microsoft Visual Studio, Visual Studio para Mac, Visual Studio Code, Azure DevOps, Team Foundation Server y los productos y servicios de Microsoft sucesores para desarrollar y probar las aplicaciones." + "license_terms": "La extensión de C/C++ solo se puede utilizar con Microsoft Visual Studio, Visual Studio para Mac, Visual Studio Code, Azure DevOps, Team Foundation Server y productos y servicios sucesores de Microsoft para desarrollar y probar sus aplicaciones." } \ No newline at end of file diff --git a/Extension/i18n/esn/ui/settings.html.i18n.json b/Extension/i18n/esn/ui/settings.html.i18n.json index 9965e69b4..6e8c69516 100644 --- a/Extension/i18n/esn/ui/settings.html.i18n.json +++ b/Extension/i18n/esn/ui/settings.html.i18n.json @@ -67,10 +67,10 @@ "limit.symbols.checkbox": "Cuando {0} (o activado), el analizador de etiquetas solo analizará los archivos de código que un archivo de código fuente haya incluido directa o indirectamente en {1}. Cuando {2} (o no está activado), el analizador de etiquetas analizará todos los archivos de código que se encuentran en las rutas de acceso especificadas en la lista de {3} .", "database.filename": "Examinar: nombre del archivo de base de datos", "database.filename.description": "La ruta de acceso a la base de datos de símbolos generada. Esto indica a la extensión que guarde la base de datos de símbolos del analizador de etiquetas en una ubicación distinta de la ubicación de almacenamiento predeterminada del área de trabajo. Si se especifica una ruta de acceso relativa, será relativa a la ubicación de almacenamiento predeterminada del área de trabajo, no a la carpeta del área de trabajo en sí. La variable {0} se puede usar para especificar una ruta de acceso relativa a la carpeta del área de trabajo (por ejemplo, {1}).", - "recursiveIncludes.reduce": "Inclusión recursiva: prioridad", + "recursiveIncludes.reduce": "Recursive includes: reduce", "recursiveIncludes.reduce.description": "Establézcalo en {0} para reducir siempre el número de rutas de inclusión recursivas proporcionadas a IntelliSense solo a aquellas rutas a las que hacen referencia actualmente las instrucciones #include. Esto requiere primero analizar los archivos para determinar qué archivos se incluyen. Establézcalo en {1} para proporcionar todas las rutas de inclusión recursivas a IntelliSense. Reducir el número de rutas de inclusiones recursivas puede mejorar el rendimiento de IntelliSense cuando hay un gran número de rutas de inclusión recursivas involucradas. No reducir el número de rutas de inclusión recursivas puede mejorar el rendimiento de IntelliSense al evitar la necesidad de analizar archivos para determinar qué rutas de inclusión proporcionar.", "recursiveIncludes.priority": "Inclusión recursiva: prioridad", "recursiveIncludes.priority.description": "La prioridad de las rutas de acceso de inclusión recursivas. Si se establece en {0}, se buscarán las rutas de inclusión recursivas antes que las rutas de inclusión del sistema. Si se establece en {1}, se buscarán las rutas de inclusión recursivas después de las rutas de inclusión del sistema.", - "recursiveIncludes.order": "Inclusión recursiva: prioridad", + "recursiveIncludes.order": "Recursive includes: order", "recursiveIncludes.order.description": "El orden en el que se buscan los subdirectorios en las rutas de acceso de inclusión recursivas." } \ No newline at end of file diff --git a/Extension/i18n/fra/package.i18n.json b/Extension/i18n/fra/package.i18n.json index 76a88e498..bf42a0beb 100644 --- a/Extension/i18n/fra/package.i18n.json +++ b/Extension/i18n/fra/package.i18n.json @@ -183,7 +183,7 @@ "c_cpp.configuration.intelliSenseEngine.default.description": "Fournit des résultats contextuels via un processus IntelliSense distinct.", "c_cpp.configuration.intelliSenseEngine.tagParser.description": "Fournit des résultats « flous » qui ne sont pas compatibles avec le contexte.", "c_cpp.configuration.intelliSenseEngine.disabled.description": "Désactive les fonctionnalités du service de langage C/C++.", - "c_cpp.configuration.autocomplete.markdownDescription": "Contrôle le fournisseur de la saisie semi-automatique. Si `disabled` et que vous souhaitez une complétion basée sur les mots, vous devrez également définir `\"[cpp]\": {\"editor.wordBasedSuggestions\": }` (et de même pour `c` et `cuda-cpp` langues).", + "c_cpp.configuration.autocomplete.markdownDescription": "Contrôle le fournisseur de la saisie semi-automatique. Si défini sur `disabled` et que vous souhaitez la saisie semi-automatique basée sur les mots, vous devrez également définir `\"[cpp]\": {\"editor.wordBasedSuggestions\": }` (et de même pour `c` et `cuda-cpp` langues).", "c_cpp.configuration.autocomplete.default.description": "Utilise le moteur IntelliSense actif.", "c_cpp.configuration.autocomplete.disabled.description": "Utilise la saisie semi-automatique basée sur le mot fournie par Visual Studio Code.", "c_cpp.configuration.errorSquiggles.description": "Contrôle si les erreurs de compilation suspectes détectées par le moteur IntelliSense seront rapportées à l'éditeur. Il contrôle également si les avertissements d'analyse de code sont signalés si les includes ne peuvent pas être trouvés. Ce paramètre est ignoré par le moteur Tag Parser.", @@ -254,7 +254,7 @@ "c_cpp.configuration.hover.description": "Si cette option est désactivée, les détails du pointage ne sont plus fournis par le serveur de langage.", "c_cpp.configuration.vcpkg.enabled.markdownDescription": "Activez les services d'intégration pour le [gestionnaire de dépendances vcpkg](https://aka.ms/vcpkg/).", "c_cpp.configuration.addNodeAddonIncludePaths.markdownDescription": "Ajouter les chemins d'inclusion de `nan` et `node-addon-api` quand ils sont des dépendances.", - "c_cpp.configuration.copilotHover.markdownDescription": "Si l’option est `disabled`, aucune information Copilot n’apparaîtra dans Hover.", + "c_cpp.configuration.copilotHover.markdownDescription": "Si `disabled`, aucune option « Générer un résumé Copilot » n’apparaît lors du pointage.", "c_cpp.configuration.renameRequiresIdentifier.markdownDescription": "Si `true`, 'Renommer le symbole' exigera un identifiant C/C++ valide.", "c_cpp.configuration.autocompleteAddParentheses.markdownDescription": "Si la valeur est `true`, l'autocomplétion ajoute automatiquement `(` après les appels de fonction. Dans ce cas `)` peut également être ajouté, en fonction de la valeur du paramètre `#editor.autoClosingBrackets#`.", "c_cpp.configuration.filesExclude.markdownDescription": "Configurer les modèles globaux pour exclure les dossiers (et les fichiers si `#C_Cpp.exclusionPolicy#` est modifié). Ils sont spécifiques à l’extension C/C++ et s’ajoutent à `#files.exclude#`, mais contrairement à `#files.exclude#`, ils s’appliquent également aux chemins en dehors du dossier de l’espace de travail actuel et ne sont pas supprimés de la vue de l’explorateur. En savoir plus sur les [motifs globaux](https://code.visualstudio.com/docs/editor/codebasics#_advanced-search-options).", @@ -303,7 +303,7 @@ "c_cpp.debuggers.cppdbg.svdPath.description": "Chemin d’accès complet au fichier SVD d’un appareil incorporé", "c_cpp.debuggers.cppvsdbg.visualizerFile.description": "Fichier .natvis à utiliser pendant le débogage de ce processus.", "c_cpp.debuggers.showDisplayString.description": "Quand un visualizerFile est spécifié, showDisplayString active la chaîne d'affichage. Si vous activez cette option, les performances peuvent être ralenties pendant le débogage.", - "c_cpp.debuggers.environment.description": "Variables d’environnement à ajouter à l’environnement du programme. Exemple : [ { \"name\": \"config\", \"value\": \"Debug\" } ], et non [ { \"config\": \"Debug\" } ].", + "c_cpp.debuggers.environment.description": "Variables d’environnement à ajouter à l’environnement du programme. Exemple : [ { \"name\": \"config\", \"value\": \"Debug\" } ], et non [ { \"config\": \"Debug\" } ].", "c_cpp.debuggers.envFile.description": "Chemin absolu d'un fichier contenant des définitions de variable d'environnement. Ce fichier a des paires clé-valeur séparées par un signe égal par ligne. Par exemple, CLÉ=VALEUR.", "c_cpp.debuggers.additionalSOLibSearchPath.description": "Liste de répertoires séparés par des points-virgules à utiliser pour rechercher des fichiers .so. Exemple : \"c:\\dir1;c:\\dir2\".", "c_cpp.debuggers.MIMode.description": "Indique le débogueur de console auquel MIDebugEngine se connecte. Les valeurs autorisées sont \"gdb\" \"lldb\".", @@ -427,7 +427,7 @@ "c_cpp.walkthrough.compilers.found.description": "L’extension C++ fonctionne avec un compilateur C++. Sélectionnez-en un parmi ceux déjà présents sur votre ordinateur en cliquant sur le bouton ci-dessous.\n[Sélectionner mon compilateur par défaut](command:C_Cpp.SelectIntelliSenseConfiguration?%22walkthrough%22)", "c_cpp.walkthrough.compilers.found.altText": "Image montrant la sélection d’une sélection rapide de compilateur par défaut et la liste des compilateurs trouvés sur l’ordinateur des utilisateurs, dont l’un est sélectionné.", "c_cpp.walkthrough.create.cpp.file.title": "Créer un fichier C++", - "c_cpp.walkthrough.create.cpp.file.description": "[Ouvrir](command:toSide:workbench.action.files.openFile) ou [créer](command:toSide:workbench.action.files.newUntitledFile?%7B%22languageId%22%3A%22cpp%22%7D) un fichier C++. Veillez à l’enregistrer avec l’extension « .cpp », telle que « helloworld.cpp ». \n[Créer un fichier C++](command:toSide:workbench.action.files.newUntitledFile?%7B%22languageId%22%3A%22cpp%22%7D)", + "c_cpp.walkthrough.create.cpp.file.description": "[Ouvrir](command:toSide:workbench.action.files.openFile) ou [créer](command:toSide:workbench.action.files.newUntitledFile?%7B%22languageId%22%3A%22cpp%22%7D) un fichier C++. Veillez à l’enregistrer avec l’extension « .cpp », telle que « helloworld.cpp ». \n[Créer un fichier C++](command:toSide:workbench.action.files.newUntitledFile?%7B%22languageId%22%3A%22cpp%22%7D)", "c_cpp.walkthrough.create.cpp.file.altText": "Ouvrez un fichier C++ ou un dossier avec un projet C++.", "c_cpp.walkthrough.command.prompt.title": "Lancer à partir de Developer Command Prompt for VS", "c_cpp.walkthrough.command.prompt.description": "Quand vous utilisez le compilateur Microsoft Visual Studio C++, l’extension C++ vous demande de lancer VS Code à partir de Developer Command Prompt for VS. Suivez les instructions à droite pour relancer.\n[Recharger la fenêtre](command:workbench.action.reloadWindow)", diff --git a/Extension/i18n/fra/src/nativeStrings.i18n.json b/Extension/i18n/fra/src/nativeStrings.i18n.json index f627ee41c..6afad0043 100644 --- a/Extension/i18n/fra/src/nativeStrings.i18n.json +++ b/Extension/i18n/fra/src/nativeStrings.i18n.json @@ -319,5 +319,5 @@ "file_not_found_in_path2": "« {0} » n'a pas été trouvé dans les fichiers compile_commands.json. « includePath » from c_cpp_properties.json in folder « {1} » sera utilisé pour ce fichier à la place.", "copilot_hover_link": "Générer un résumé de Copilot", "browse_path_not_found": "Impossible d’indexer des fichiers à partir d’un dossier inexistant : {0}", - "license_terms": "L’extension C/C++ ne peut être utilisée qu’avec Microsoft Visual Studio, Visual Studio pour Mac, Visual Studio Code, Azure DevOps, Team Foundation Server et les produits et services Microsoft successeurs pour développer et tester vos applications." + "license_terms": "Vous ne pouvez utiliser l’extension C/C++ qu’avec Microsoft Visual Studio, Visual Studio pour Mac, Visual Studio Code, Azure DevOps, Team Foundation Server et les produits et services Microsoft qui leur succèdent pour développer et tester vos applications." } \ No newline at end of file diff --git a/Extension/i18n/fra/ui/settings.html.i18n.json b/Extension/i18n/fra/ui/settings.html.i18n.json index 53598291c..576abe7bf 100644 --- a/Extension/i18n/fra/ui/settings.html.i18n.json +++ b/Extension/i18n/fra/ui/settings.html.i18n.json @@ -67,10 +67,10 @@ "limit.symbols.checkbox": "Lorsque {0} (ou activé), l’analyseur de balise analyse uniquement les fichiers de code qui ont été inclus directement ou indirectement par un fichier source dans {1}. Lorsque {2} (ou non activé), l’analyseur de balise analyse tous les fichiers de code trouvés dans les chemins d’accès spécifiés dans la liste {3} .", "database.filename": "Parcourir : nom de fichier de base de données", "database.filename.description": "Chemin de la base de données de symboles générée. Cela indique à l'extension d'enregistrer la base de données de symboles de l'analyseur de balises à un emplacement autre que l'emplacement de stockage par défaut de l'espace de travail. Si un chemin relatif est spécifié, il est relatif à l'emplacement de stockage par défaut de l'espace de travail et non au dossier d'espace de travail lui-même. La variable {0} peut être utilisée pour spécifier un chemin relatif au dossier d'espace de travail (par ex., {1}).", - "recursiveIncludes.reduce": "Inclusions récursives : priorité", + "recursiveIncludes.reduce": "Recursive includes: reduce", "recursiveIncludes.reduce.description": "Affectez la valeur {0} pour toujours réduire le nombre de chemins d’accès d’inclusion récursive fournis à IntelliSense uniquement aux chemins actuellement référencés par des instructions #include. Pour cela, vous devez d’abord analyser les fichiers pour déterminer lesquels sont inclus. Affectez la valeur {1} pour fournir tous les chemins d’accès d’inclusion récursive à IntelliSense. La réduction du nombre de chemins d’accès d’inclusion récursive peut améliorer les performances d’IntelliSense lorsque de très nombreux chemins d’accès d’inclusion récursive sont impliqués. Ne pas réduire le nombre de chemins d’accès d’inclusion récursive peut améliorer les performances d’IntelliSense en évitant la nécessité d’analyser les fichiers pour déterminer quels chemins d’accès d’inclusion fournir.", "recursiveIncludes.priority": "Inclusions récursives : priorité", "recursiveIncludes.priority.description": "Priorité des chemins d’accès d’inclusion récursive. Si la valeur est {0}, les chemins d’accès d’inclusion récursive seront recherchés avant les chemins d’accès d’inclusion système. Si la valeur est {1}, les chemins d’accès d’inclusion récursive seront recherchés après les chemins d’accès d’inclusion système.", - "recursiveIncludes.order": "Inclusions récursives : priorité", + "recursiveIncludes.order": "Recursive includes: order", "recursiveIncludes.order.description": "Ordre dans lequel les sous-répertoires sous récursifs incluent des chemins d’accès sont recherchés." } \ No newline at end of file diff --git a/Extension/i18n/ita/package.i18n.json b/Extension/i18n/ita/package.i18n.json index d8fd76037..0ef6c2b63 100644 --- a/Extension/i18n/ita/package.i18n.json +++ b/Extension/i18n/ita/package.i18n.json @@ -254,7 +254,7 @@ "c_cpp.configuration.hover.description": "Se questa opzione è disabilitata, i dettagli al passaggio del mouse non vengono più forniti dal server di linguaggio.", "c_cpp.configuration.vcpkg.enabled.markdownDescription": "Abilita i servizi di integrazione per l'[utilità di gestione dipendenze di vcpkg](https://aka.ms/vcpkg/).", "c_cpp.configuration.addNodeAddonIncludePaths.markdownDescription": "Aggiungere percorsi di inclusione da `nan` e `node-addon-api` quando sono dipendenze.", - "c_cpp.configuration.copilotHover.markdownDescription": "Se `disabled` è impostato, nessuna informazione di Copilot verrà visualizzata al passaggio del mouse.", + "c_cpp.configuration.copilotHover.markdownDescription": "Se `disabled`, al passaggio del puntatore non verrà visualizzata l’opzione 'Genera riepilogo Copilot'.", "c_cpp.configuration.renameRequiresIdentifier.markdownDescription": "Se è `true`, con 'Rinomina simbolo' sarà richiesto un identificatore C/C++ valido.", "c_cpp.configuration.autocompleteAddParentheses.markdownDescription": "Se è `true`, il completamento automatico aggiungerà automaticamente `(` dopo le chiamate di funzione. In tal caso potrebbe essere aggiunto anche `)`, a seconda del valore dell'impostazione `#editor.autoClosingBrackets#`.", "c_cpp.configuration.filesExclude.markdownDescription": "Configurare i criteri GLOB per escludere le cartelle (e i file se `#C_Cpp.exclusionPolicy#` viene modificato). Sono specifici dell'estensione C/C++ e si aggiungono a `#files.exclude#`, ma diversamente da `#files.exclude#` si applicano anche ai percorsi esterni alla cartella dell'area di lavoro corrente e non vengono rimossi dalla visualizzazione Esplora risorse. Altre informazioni su [criteri GLOB](https://code.visualstudio.com/docs/editor/codebasics#_advanced-search-options).", diff --git a/Extension/i18n/ita/src/nativeStrings.i18n.json b/Extension/i18n/ita/src/nativeStrings.i18n.json index 4f66150ae..13f7e2437 100644 --- a/Extension/i18n/ita/src/nativeStrings.i18n.json +++ b/Extension/i18n/ita/src/nativeStrings.i18n.json @@ -319,5 +319,5 @@ "file_not_found_in_path2": "\"{0}\" non è stato trovato nei file compile_commands.json. In alternativa per questo file verrà usato ''includePath'' del file c_cpp_properties.json nella cartella ''{1}''.", "copilot_hover_link": "Genera riepilogo Copilot", "browse_path_not_found": "Non è possibile indicizzare i file da una cartella non esistente: {0}", - "license_terms": "L'estensione C/C++ può essere usata solo con Microsoft Visual Studio, Visual Studio per Mac, Visual Studio Code, Azure DevOps, Team Foundation Server e prodotti e servizi Microsoft successivi per sviluppare e testare le applicazioni." + "license_terms": "L'estensione C/C++ può essere utilizzata solo con Microsoft Visual Studio, Visual Studio per Mac, Visual Studio Code, Azure DevOps, Team Foundation Server e i successori dei prodotti e servizi Microsoft per sviluppare e testare le tue applicazioni." } \ No newline at end of file diff --git a/Extension/i18n/ita/ui/settings.html.i18n.json b/Extension/i18n/ita/ui/settings.html.i18n.json index a584cbaa6..b56f3fb49 100644 --- a/Extension/i18n/ita/ui/settings.html.i18n.json +++ b/Extension/i18n/ita/ui/settings.html.i18n.json @@ -67,10 +67,10 @@ "limit.symbols.checkbox": "Quando è impostato su {0} (o selezionato), il parser tag analizzerà solo i file di codice che sono stati inclusi direttamente o indirettamente da un file di origine in {1}. Quando è impostato su {2} (o non è selezionato), il parser tag analizzerà tutti i file di codice trovati nei percorsi specificati nell'elenco di {3}.", "database.filename": "Sfoglia: nome del file di database", "database.filename.description": "Percorso del database dei simboli generato. Indica all'estensione di salvare il database dei simboli del parser di tag in una posizione diversa da quella di archiviazione predefinita dell'area di lavoro. Se viene specificato un percorso relativo, sarà relativo alla posizione di archiviazione predefinita dell'area di lavoro e non alla cartella dell'area di lavoro. È possibile usare la variabile {0} per specificare un percorso relativo alla cartella dell'area di lavoro, ad esempio {1}.", - "recursiveIncludes.reduce": "Inclusioni ricorsive: priorità", + "recursiveIncludes.reduce": "Recursive includes: reduce", "recursiveIncludes.reduce.description": "Imposta su {0} per ridurre il numero di percorsi di inclusione ricorsivi forniti a IntelliSense, limitandoli solo ai percorsi attualmente referenziati da istruzioni #include. Per determinare quali file sono inclusi, è necessario prima analizzare i file. Imposta su {1} per fornire tutti i percorsi di inclusione ricorsivi a IntelliSense. La riduzione del numero di percorsi di inclusione ricorsivi può migliorare le prestazioni di IntelliSense in caso di un numero molto elevato di percorsi di inclusione ricorsivi. Non ridurre il numero di percorsi di inclusione ricorsivi può migliorare le prestazioni di IntelliSense evitando la necessità di analizzare i file per determinare quali percorsi di inclusione fornire.", "recursiveIncludes.priority": "Inclusioni ricorsive: priorità", "recursiveIncludes.priority.description": "La priorità dei percorsi di inclusione ricorsivi. Se impostato su {0}, i percorsi di inclusione ricorsivi verranno cercati prima dei percorsi di inclusione di sistema. Se impostato su {1}, i percorsi di inclusione ricorsivi verranno cercati dopo i percorsi di inclusione di sistema.", - "recursiveIncludes.order": "Inclusioni ricorsive: priorità", + "recursiveIncludes.order": "Recursive includes: order", "recursiveIncludes.order.description": "L'ordine in cui vengono cercate le sottodirectory nei percorsi di inclusione ricorsivi." } \ No newline at end of file diff --git a/Extension/i18n/jpn/package.i18n.json b/Extension/i18n/jpn/package.i18n.json index fd06eeadc..347e54cc6 100644 --- a/Extension/i18n/jpn/package.i18n.json +++ b/Extension/i18n/jpn/package.i18n.json @@ -254,7 +254,7 @@ "c_cpp.configuration.hover.description": "無効にすると、ホバーの詳細が言語サーバーから提供されなくなります。", "c_cpp.configuration.vcpkg.enabled.markdownDescription": "[vcpkg 依存関係マネージャー](https://aka.ms/vcpkg/) の統合サービスを有効にします。", "c_cpp.configuration.addNodeAddonIncludePaths.markdownDescription": "依存関係である場合は、`nan` および `node-addon-api` のインクルード パスを追加してください。", - "c_cpp.configuration.copilotHover.markdownDescription": "`disabled` の場合、ホバーに Copilot 情報は表示されません。", + "c_cpp.configuration.copilotHover.markdownDescription": "`disabled` にすると、ホバー時に [Copilot 要約を生成] オプションは表示されません。", "c_cpp.configuration.renameRequiresIdentifier.markdownDescription": "`true` の場合、'シンボルの名前変更' には有効な C/C++ 識別子が必要です。", "c_cpp.configuration.autocompleteAddParentheses.markdownDescription": "`true` の場合、関数呼び出しの後に `(` が自動的に追加されます。その場合は、`#editor.autoClosingBrackets#` 設定の値に応じて、`)` も追加される場合があります。", "c_cpp.configuration.filesExclude.markdownDescription": "フォルダー (および `#C_Cpp.exclusionPolicy#` が変更されている場合はファイル) を除外するための glob パターンを構成します。これらは C/C++ 拡張機能に固有であり、`#files.exclude#` に加えてありますが、`#files.exclude#` とは異なり、現在のワークスペース フォルダーの外部のパスにも適用され、エクスプローラー ビューからは削除されません。[glob パターン](https://code.visualstudio.com/docs/editor/codebasics#_advanced-search-options) についての詳細をご確認ください。", diff --git a/Extension/i18n/jpn/src/nativeStrings.i18n.json b/Extension/i18n/jpn/src/nativeStrings.i18n.json index da19d58e2..470b8061f 100644 --- a/Extension/i18n/jpn/src/nativeStrings.i18n.json +++ b/Extension/i18n/jpn/src/nativeStrings.i18n.json @@ -319,5 +319,5 @@ "file_not_found_in_path2": "\"{0}\" が compile_commands.json ファイルに見つかりません。フォルダー '{1}' にある c_cpp_properties.json からの 'includePath' が、このファイルで代わりに使用されます。", "copilot_hover_link": "Copilot 要約の生成", "browse_path_not_found": "存在しないフォルダーにあるファイルにインデックスを付けることはできません: {0}", - "license_terms": "C/C++拡張は、Microsoft Visual Studio、Visual Studio for Mac、Visual Studio Code、Azure DevOps、Team Foundation Server、および後継のMicrosoft製品およびサービスでのみ使用して、アプリケーションの開発とテストを行うことができます。" + "license_terms": "C/C++ 拡張機能は、Microsoft Visual Studio、Visual Studio for Mac、Visual Studio Code、Azure DevOps、Team Foundation Server、およびアプリケーションの開発とテストをするための、後続の Microsoft 製品およびサービスでのみ使用できます。" } \ No newline at end of file diff --git a/Extension/i18n/jpn/ui/settings.html.i18n.json b/Extension/i18n/jpn/ui/settings.html.i18n.json index bd10237fd..329e54c0a 100644 --- a/Extension/i18n/jpn/ui/settings.html.i18n.json +++ b/Extension/i18n/jpn/ui/settings.html.i18n.json @@ -67,10 +67,10 @@ "limit.symbols.checkbox": "{0} (またはチェックボックスがオン) の場合、タグ パーサーは、{1} のソース ファイルによって直接的または間接的にインクルードされたコード ファイルのみを解析します。{2} (またはチェック ボックスがオフ) の場合、タグ パーサーは、{3} の一覧に指定されたパスで見つかったすべてのコード ファイルを解析します。", "database.filename": "参照: データベース ファイル名", "database.filename.description": "生成されたシンボル データベースへのパスです。これは、タグ パーサーのシンボル データベースをワークスペースの既定のストレージの場所以外に保存するように拡張機能に指示します。相対パスを指定した場合、ワークスペース フォルダー自体ではなく、ワークスペースの既定のストレージの場所に対する相対パスになります。{0} 変数を使用して、ワークスペース フォルダーに対する相対パスを指定することもできます (例: {1})。", - "recursiveIncludes.reduce": "再帰インクルード: 優先度", + "recursiveIncludes.reduce": "Recursive includes: reduce", "recursiveIncludes.reduce.description": "{0} に設定すると、IntelliSense に提供される再帰インクルード パスの数は #include ステートメントによって現在参照されているパスのみに減らされます。これには、まずファイルを解析して、どのファイルが含まれているかを判断する必要があります。すべての再帰インクルード パスを IntelliSense に提供するには、{1} に設定します。非常に多数の再帰インクルード パスが関係している場合、再帰インクルード パスの数を減らすと、IntelliSense のパフォーマンスが向上する可能性があります。再帰インクルード パスの数を減らさないことで、どのインクルード パスを提供するかを判断するためのファイル解析が不要になり、IntelliSense のパフォーマンスが向上する場合があります。", "recursiveIncludes.priority": "再帰インクルード: 優先度", "recursiveIncludes.priority.description": "再帰インクルード パスの優先順位。{0} に設定すると、再帰インクルード パスはシステム インクルード パスの前に検索されます。{1} に設定すると、再帰インクルード パスはシステム インクルード パスの後に検索されます。", - "recursiveIncludes.order": "再帰インクルード: 優先度", + "recursiveIncludes.order": "Recursive includes: order", "recursiveIncludes.order.description": "再帰インクルード パスの下のサブディレクトリが検索される順序。" } \ No newline at end of file diff --git a/Extension/i18n/kor/package.i18n.json b/Extension/i18n/kor/package.i18n.json index 587ab6830..33591c640 100644 --- a/Extension/i18n/kor/package.i18n.json +++ b/Extension/i18n/kor/package.i18n.json @@ -254,7 +254,7 @@ "c_cpp.configuration.hover.description": "사용하지 않도록 설정하면 언어 서버에서 마우스로 가리키기 세부 정보를 더 이상 제공하지 않습니다.", "c_cpp.configuration.vcpkg.enabled.markdownDescription": "[vcpkg 종속성 관리자](https://aka.ms/vcpkg/)에 대해 통합 서비스를 사용하도록 설정합니다.", "c_cpp.configuration.addNodeAddonIncludePaths.markdownDescription": "`nan` 및 `node-addon-api`가 종속성일 때 해당 포함 경로를 추가합니다.", - "c_cpp.configuration.copilotHover.markdownDescription": "`disabled`인 경우 Hover에 Copilot 정보가 표시되지 않습니다.", + "c_cpp.configuration.copilotHover.markdownDescription": "(`disabled`)' 비활성화'된 경우 마우스로 가리키면 'Copilot 요약 생성' 옵션이 표시되지 않습니다.", "c_cpp.configuration.renameRequiresIdentifier.markdownDescription": "`true`이면 '기호 이름 바꾸기'에 유효한 C/C++ 식별자가 필요합니다.", "c_cpp.configuration.autocompleteAddParentheses.markdownDescription": "`true`이면 자동 완성에서 `#editor.autoClosingBrackets#` 설정 값에 따라 함수 호출 뒤에 `(`를 자동으로 추가하며, 이 경우 `)`도 추가될 수 있습니다.", "c_cpp.configuration.filesExclude.markdownDescription": "폴더를 제외하기 위한 glob 패턴을 구성합니다(`#C_Cpp.exclusionPolicy#`가 변경된 경우 파일도). 이는 C/C++ 확장에만 해당하며 `#files.exclude#`와 더불어 사용되지만 `#files.exclude#`와 달리 현재 작업 영역 폴더 외부의 경로에도 적용되며 탐색기 보기에서 제거되지 않습니다. [glob 패턴](https://code.visualstudio.com/docs/editor/codebasics#_advanced-search-options)에 대해 자세히 알아보세요.", @@ -303,7 +303,7 @@ "c_cpp.debuggers.cppdbg.svdPath.description": "포함된 장치의 SVD 파일에 대한 전체 경로입니다.", "c_cpp.debuggers.cppvsdbg.visualizerFile.description": "이 프로세스를 디버그할 때 사용할 .natvis 파일입니다.", "c_cpp.debuggers.showDisplayString.description": "visualizerFile을 지정하면 showDisplayString은 표시 문자열을 사용하도록 설정합니다. 이 옵션을 켜면 디버그하는 동안 성능이 저하될 수 있습니다.", - "c_cpp.debuggers.environment.description": "프로그램의 환경에 추가할 환경 변수입니다. 예: [ { \"name\": \"config\", \"value\": \"Debug\" } ], 이(가) 아님 [ { \"config\": \"Debug\" } ].", + "c_cpp.debuggers.environment.description": "프로그램의 환경에 추가할 환경 변수입니다. 예: [ { \"name\": \"config\", \"value\": \"Debug\" } ], 잘못된 형식: [ { \"config\": \"Debug\" } ]", "c_cpp.debuggers.envFile.description": "환경 변수 정의를 포함하는 파일의 절대 경로입니다. 이 파일에는 줄마다 등호로 구분된 키 값 쌍이 있습니다(예: 키=값).", "c_cpp.debuggers.additionalSOLibSearchPath.description": ".so 파일 검색에 사용할 디렉터리의 세미콜론으로 구분된 목록입니다(예: \"c:\\dir1;c:\\dir2\").", "c_cpp.debuggers.MIMode.description": "MIDebugEngine이 연결할 콘솔 디버거를 나타냅니다. 허용되는 값은 \"gdb\" \"lldb\"입니다.", diff --git a/Extension/i18n/kor/src/nativeStrings.i18n.json b/Extension/i18n/kor/src/nativeStrings.i18n.json index f249c36ae..ae6d678c2 100644 --- a/Extension/i18n/kor/src/nativeStrings.i18n.json +++ b/Extension/i18n/kor/src/nativeStrings.i18n.json @@ -319,5 +319,5 @@ "file_not_found_in_path2": "compile_commands.json 파일에서 \"{0}\"을(를) 찾을 수 없습니다. '{1}' 폴더의 c_cpp_properties.json 'includePath'가 대신 이 파일에 사용됩니다.", "copilot_hover_link": "Copilot 요약 생성", "browse_path_not_found": "존재하지 않는 폴더에서 파일을 인덱싱할 수 없습니다. {0}", - "license_terms": "C/C++ 확장은 Microsoft Visual Studio, Mac용 Visual Studio, Visual Studio Code, Azure DevOps, Team Foundation Server 및 후속 Microsoft 제품 및 서비스에서만 애플리케이션을 개발하고 테스트하는 데 사용할 수 있습니다." + "license_terms": "C/C++ 확장은 애플리케이션을 개발하고 테스트하기 위해 Microsoft Visual Studio, 맥용 Visual Studio, Visual Studio Code, Azure DevOps, Team Foundation Server 및 후속 Microsoft 제품 및 서비스에만 사용할 수 있습니다." } \ No newline at end of file diff --git a/Extension/i18n/kor/ui/settings.html.i18n.json b/Extension/i18n/kor/ui/settings.html.i18n.json index e2849ff37..7583df328 100644 --- a/Extension/i18n/kor/ui/settings.html.i18n.json +++ b/Extension/i18n/kor/ui/settings.html.i18n.json @@ -67,10 +67,10 @@ "limit.symbols.checkbox": "{0}(또는 선택)인 경우 태그 파서는 {1}의 원본 파일에 직접 또는 간접적으로 포함된 코드 파일만 구문 분석합니다. {2}인 경우(또는 선택하지 않은 경우) 태그 파서는 {3} 목록에 지정된 경로에 있는 모든 코드 파일을 구문 분석합니다.", "database.filename": "찾아보기: 데이터베이스 파일 이름", "database.filename.description": "생성된 기호 데이터베이스의 경로입니다. 이 경로는 태그 파서의 기호 데이터베이스를 작업 영역의 기본 스토리지 위치가 아닌 다른 곳에 저장하도록 확장에 지시합니다. 상대 경로가 지정된 경우 작업 영역 폴더 자체가 아니라 작업 영역의 기본 스토리지 위치에 대해 상대적으로 만들어집니다. {0} 변수를 사용하여 작업 영역 폴더에 상대적인 경로를 지정할 수 있습니다(예: {1}).", - "recursiveIncludes.reduce": "재귀 포함: 우선 순위", + "recursiveIncludes.reduce": "Recursive includes: reduce", "recursiveIncludes.reduce.description": "intelliSense에 제공된 재귀 포함 경로의 수를 현재 #include 문에서 참조하는 경로로만 줄이려면 {0}(으)로 설정합니다. 이를 위해서는 포함된 파일을 확인하기 위해 먼저 파일을 구문 분석해야 합니다. IntelliSense에 대한 모든 재귀 포함 경로를 제공하려면 {1}(으)로 설정합니다. 재귀 포함 경로의 수를 줄이면 매우 많은 수의 재귀 포함 경로가 관련된 경우 IntelliSense 성능이 향상될 수 있습니다. 재귀 포함 경로의 수를 줄이지 않으면 제공할 포함 경로를 확인하기 위해 파일을 구문 분석할 필요가 없으므로 IntelliSense 성능을 향상시킬 수 있습니다.", "recursiveIncludes.priority": "재귀 포함: 우선 순위", "recursiveIncludes.priority.description": "재귀 포함 경로의 우선 순위입니다. {0}(으)로 설정하면 재귀 포함 경로가 시스템 포함 경로 전에 검색됩니다. {1}(으)로 설정하면 시스템 포함 경로 후에 재귀 포함 경로가 검색됩니다.", - "recursiveIncludes.order": "재귀 포함: 우선 순위", + "recursiveIncludes.order": "Recursive includes: order", "recursiveIncludes.order.description": "재귀 포함 경로 아래의 하위 디렉터리가 검색되는 순서입니다." } \ No newline at end of file diff --git a/Extension/i18n/plk/package.i18n.json b/Extension/i18n/plk/package.i18n.json index d8d30ef0d..c0a7069cd 100644 --- a/Extension/i18n/plk/package.i18n.json +++ b/Extension/i18n/plk/package.i18n.json @@ -254,7 +254,7 @@ "c_cpp.configuration.hover.description": "W przypadku wyłączenia szczegóły dotyczące umieszczania wskaźnika myszy nie będą już udostępniane przez serwer języka.", "c_cpp.configuration.vcpkg.enabled.markdownDescription": "Włącz usługi integracji dla elementu [vcpkg dependency manager](https://aka.ms/vcpkg/).", "c_cpp.configuration.addNodeAddonIncludePaths.markdownDescription": "Dodaj ścieżki dołączania z plików `nan` i `node-addon-api`, jeśli są one zależnościami.", - "c_cpp.configuration.copilotHover.markdownDescription": "W przypadku wartości `disabled` po najechaniu kursorem nie będą wyświetlane żadne informacje funkcji Copilot.", + "c_cpp.configuration.copilotHover.markdownDescription": "W przypadku opcji `disabled` po zatrzymaniu wskaźnika myszy nie będzie wyświetlana opcja „Generuj podsumowanie funkcji Copilot”.", "c_cpp.configuration.renameRequiresIdentifier.markdownDescription": "Jeśli ma wartość `true`, element „Symbol zmiany nazwy” będzie wymagać prawidłowego identyfikatora C/C++.", "c_cpp.configuration.autocompleteAddParentheses.markdownDescription": "Jeśli ma wartość `true`, autouzupełnianie będzie automatycznie dodawać znak `(` po wywołaniach funkcji, a w niektórych przypadkach może również dodawać znak `)`, zależnie od ustawienia `#editor.autoClosingBrackets#`.", "c_cpp.configuration.filesExclude.markdownDescription": "Skonfiguruj wzorce globalne na potrzeby wykluczania folderów (i plików w przypadku zmiany zasad `#C_Cpp.exclusionPolicy#`). Są one specyficzne dla rozszerzenia języka C/C++ i są dodatkiem do elementu `#files.exclude#`, ale w przeciwieństwie do elementu `#files.exclude#` mają również zastosowanie do ścieżek spoza bieżącego folderu obszaru roboczego i nie są usuwane z widoku Eksploratora. Przeczytaj więcej o [wzorcach globalnych](https://code.visualstudio.com/docs/editor/codebasics#_advanced-search-options).", diff --git a/Extension/i18n/plk/src/nativeStrings.i18n.json b/Extension/i18n/plk/src/nativeStrings.i18n.json index e0d8cc5e7..cc6621b7a 100644 --- a/Extension/i18n/plk/src/nativeStrings.i18n.json +++ b/Extension/i18n/plk/src/nativeStrings.i18n.json @@ -319,5 +319,5 @@ "file_not_found_in_path2": "Nie znaleziono elementu „{0}” w plikach compile_commands.json. Zamiast tego dla tego pliku zostanie użyty element „includePath” z c_cpp_properties.json w folderze „{1}”.", "copilot_hover_link": "Generuj podsumowanie funkcji Copilot", "browse_path_not_found": "Nie można indeksować plików z nieistniejącego folderu: {0}", - "license_terms": "Rozszerzenie C/C++ może być używane tylko z programami Microsoft Visual Studio, Visual Studio dla komputerów Mac, Visual Studio Code, Azure DevOps, Team Foundation Server oraz następcami produktów i usług firmy Microsoft do tworzenia i testowania aplikacji." + "license_terms": "Rozszerzenie C/C++ może być używane tylko z programami Microsoft Visual Studio, Visual Studio dla komputerów Mac, Visual Studio Code, Azure DevOps, Team Foundation Server oraz kolejnymi wersjami produktów i usług firmy Microsoft do tworzenia i testowania aplikacji." } \ No newline at end of file diff --git a/Extension/i18n/plk/ui/settings.html.i18n.json b/Extension/i18n/plk/ui/settings.html.i18n.json index 6c3661a07..549a0ba4a 100644 --- a/Extension/i18n/plk/ui/settings.html.i18n.json +++ b/Extension/i18n/plk/ui/settings.html.i18n.json @@ -67,10 +67,10 @@ "limit.symbols.checkbox": "Jeśli wartość jest równa {0} (lub jest zaznaczona), analizator tagów analizuje tylko pliki kodu, które zostały bezpośrednio lub pośrednio dołączone przez plik źródłowy w {1}. Jeśli wartość jest równa {2} (lub nie jest zaznaczona), analizator tagów będzie analizować wszystkie pliki kodu znalezione w ścieżkach określonych na {3} liście.", "database.filename": "Przeglądaj: nazwa pliku bazy danych", "database.filename.description": "Ścieżka do generowanej bazy danych symboli. Określa ona, że rozszerzenie ma zapisać bazę danych symboli analizatora tagów w innym miejscu niż domyślna lokalizacja magazynowania obszaru roboczego. Jeśli zostanie określona ścieżka względna, będzie to ścieżka względem domyślnej lokalizacji magazynowania obszaru roboczego, a nie folderu obszaru roboczego. Można użyć zmiennej {0} do określenia ścieżki względem folderu obszaru roboczego (np. {1}).", - "recursiveIncludes.reduce": "Rekursywne dołączania: priorytet", + "recursiveIncludes.reduce": "Recursive includes: reduce", "recursiveIncludes.reduce.description": "Ustaw na wartość {0}, aby zmniejszyć liczbę ścieżek rekursywnego dołączania dostarczanych do funkcji IntelliSense tylko do tych ścieżek, do których obecnie odwołują się instrukcje #include. Wymaga to najpierw przeanalizowania plików w celu określenia, które pliki są dołączane. Ustaw na wartość{1}, aby dostarczać wszystkie ścieżki rekursywnego dołączania do funkcji IntelliSense. Zmniejszenie liczby ścieżek rekursywnego dołączania może zwiększyć wydajność funkcji IntelliSense w przypadku dużej liczby ścieżek rekursywnego dołączania. Brak zmniejszenia liczby ścieżek rekursywnego dołączania może zwiększyć wydajność funkcji IntelliSense, unikając konieczności analizowania plików w celu określenia, które ścieżki dołączane należy podać.", "recursiveIncludes.priority": "Rekursywne dołączania: priorytet", "recursiveIncludes.priority.description": "Priorytet ścieżek rekursywnego dołączania. Jeśli ustawiono na wartość {0}, ścieżki rekursywnego dołączania będą przeszukiwane przed ścieżkami systemowego dołączania. Jeśli ustawiono na wartość {1}, ścieżki rekursywnego dołączania będą przeszukiwane po ścieżkach systemowego dołączania.", - "recursiveIncludes.order": "Rekursywne dołączania: priorytet", + "recursiveIncludes.order": "Recursive includes: order", "recursiveIncludes.order.description": "Kolejność przeszukiwania podkatalogów w ścieżkach dołączania rekursywnego." } \ No newline at end of file diff --git a/Extension/i18n/ptb/package.i18n.json b/Extension/i18n/ptb/package.i18n.json index 731992c73..e8e4d0964 100644 --- a/Extension/i18n/ptb/package.i18n.json +++ b/Extension/i18n/ptb/package.i18n.json @@ -254,7 +254,7 @@ "c_cpp.configuration.hover.description": "Se desabilitado, os detalhes do hover não são mais fornecidos pelo servidor de idiomas.", "c_cpp.configuration.vcpkg.enabled.markdownDescription": "Habilitar os serviços de integração para o [gerenciador de dependências vcpkg](https://aka.ms/vcpkg/).", "c_cpp.configuration.addNodeAddonIncludePaths.markdownDescription": "Adicione caminhos de inclusão de `nan` e `node-addon-api` quando forem dependências.", - "c_cpp.configuration.copilotHover.markdownDescription": "Se `disabled`, nenhuma informação do Copilot será exibida em Hover.", + "c_cpp.configuration.copilotHover.markdownDescription": "Se `disabled`, a opção \"Gerar resumo do Copilot\" não aparecerá ao passar o cursor.", "c_cpp.configuration.renameRequiresIdentifier.markdownDescription": "Se `true`, 'Renomear Símbolo' exigirá um identificador C/C++ válido.", "c_cpp.configuration.autocompleteAddParentheses.markdownDescription": "Se `true`, autocomplete adicionará automaticamente `(` após chamadas de função, neste caso `)` também pode ser adicionado, dependendo do valor da configuração `#editor.autoClosingBrackets#`.", "c_cpp.configuration.filesExclude.markdownDescription": "Configure padrões glob para excluir pastas (e arquivos se `#C_Cpp.exclusionPolicy#` for alterado). Esses são específicos para a extensão C/C++ e são adicionais a `#files.exclude#`, mas ao contrário de `#files.exclude#`, eles também se aplicam a caminhos fora do espaço de trabalho atual e não são removidos da visualização do Explorer. Saiba mais sobre [glob patterns](https://code.visualstudio.com/docs/editor/codebasics#_advanced-search-options).", diff --git a/Extension/i18n/ptb/ui/settings.html.i18n.json b/Extension/i18n/ptb/ui/settings.html.i18n.json index 1de9d4a9c..d052b8462 100644 --- a/Extension/i18n/ptb/ui/settings.html.i18n.json +++ b/Extension/i18n/ptb/ui/settings.html.i18n.json @@ -67,10 +67,10 @@ "limit.symbols.checkbox": "Quando {0} (ou marcado), o Analisador de Marca analisará somente os arquivos de código que foram diretamente ou indiretamente incluídos em um arquivo de origem no {1}. Quando {2} (ou não marcado), o Analisador de Marca analisará todos os arquivos de código encontrados nos caminhos especificados na lista de {3}.", "database.filename": "Procurar: nome do arquivo do banco de dados", "database.filename.description": "O caminho para o banco de dados de símbolo gerado. Isso instrui a extensão a salvar o banco de dados de símbolos do Analisador de Marca em algum lugar diferente do local de armazenamento padrão do workspace. Se um caminho relativo for especificado, ele será feito em relação ao local de armazenamento padrão do workspace, não à própria pasta do workspace. A {0} variável pode ser usada para especificar um caminho relativo à pasta do workspace (por exemplo, {1}).", - "recursiveIncludes.reduce": "Inclui recursiva: prioridade", + "recursiveIncludes.reduce": "Recursive includes: reduce", "recursiveIncludes.reduce.description": "Defina como {0} para reduzir o número de caminhos de inclusão recursivos fornecidos ao IntelliSense apenas para os caminhos atualmente referenciados por instruções #include. Isso requer primeiro a análise de arquivos para determinar quais arquivos estão incluídos. Defina como {1} para fornecer todos os caminhos de inclusão recursivos para o IntelliSense. Reduzir o número de caminhos de inclusão recursivos pode melhorar o desempenho do IntelliSense quando um número muito grande de caminhos de inclusão recursivos está envolvido. Não reduzir o número de caminhos de inclusão recursivos pode melhorar o desempenho do IntelliSense, evitando a necessidade de analisar arquivos para determinar quais caminhos de inclusão fornecer.", "recursiveIncludes.priority": "Inclui recursiva: prioridade", "recursiveIncludes.priority.description": "A prioridade dos caminhos de inclusão recursivo. Se definido como {0}, os caminhos de inclusão recursivos serão pesquisados antes que o sistema inclua caminhos. Se definido como {1}, os caminhos de inclusão recursivos serão pesquisados depois que o sistema incluir caminhos.", - "recursiveIncludes.order": "Inclui recursiva: prioridade", + "recursiveIncludes.order": "Recursive includes: order", "recursiveIncludes.order.description": "A ordem na qual os subdiretórios em caminhos de inclusão recursivos são pesquisados." } \ No newline at end of file diff --git a/Extension/i18n/rus/package.i18n.json b/Extension/i18n/rus/package.i18n.json index aa48cfff7..01336c3cb 100644 --- a/Extension/i18n/rus/package.i18n.json +++ b/Extension/i18n/rus/package.i18n.json @@ -254,7 +254,7 @@ "c_cpp.configuration.hover.description": "Если этот параметр отключен, сведения при наведении курсора больше не предоставляются языковым сервером.", "c_cpp.configuration.vcpkg.enabled.markdownDescription": "Включите службы интеграции для [диспетчера зависимостей vcpkg](https://aka.ms/vcpkg/).", "c_cpp.configuration.addNodeAddonIncludePaths.markdownDescription": "Добавьте пути включения из `nan` и `node-addon-api`, если они являются зависимостями.", - "c_cpp.configuration.copilotHover.markdownDescription": "Если параметр `disabled`, сведения о Copilot не будут отображаться при наведении указателя мыши.", + "c_cpp.configuration.copilotHover.markdownDescription": "Если `disabled`, при наведении курсора не будет отображаться параметр \"Создать сводку Copilot\".", "c_cpp.configuration.renameRequiresIdentifier.markdownDescription": "Если этот параметр имеет значение `true`, для операции 'Переименование символа' потребуется указать допустимый идентификатор C/C++.", "c_cpp.configuration.autocompleteAddParentheses.markdownDescription": "Если присвоено значение `true`, автозаполнение автоматически добавит `(` после вызовов функции, при этом также может добавляться `)` в зависимости от значения параметра `#editor.autoClosingBrackets#`.", "c_cpp.configuration.filesExclude.markdownDescription": "Настройка стандартных масок для исключения папок (и файлов, если внесено изменение в `#C_Cpp.exclusionPolicy#`). Они специфичны для расширения C/C++ и дополняют `#files.exclude#`, но в отличие от `#files.exclude#` они применяются также к путям вне папки используемой рабочей области и не удаляются из представления обозревателя. Дополнительные сведения о [шаблонах глобусов](https://code.visualstudio.com/docs/editor/codebasics#_advanced-search-options).", diff --git a/Extension/i18n/rus/src/nativeStrings.i18n.json b/Extension/i18n/rus/src/nativeStrings.i18n.json index 10e3e19aa..78962ff11 100644 --- a/Extension/i18n/rus/src/nativeStrings.i18n.json +++ b/Extension/i18n/rus/src/nativeStrings.i18n.json @@ -319,5 +319,5 @@ "file_not_found_in_path2": "\"{0}\" не найден в файлах compile_commands.json. Вместо него для этого файла будет использоваться \"includePath\" из файла c_cpp_properties.json в папке \"{1}\".", "copilot_hover_link": "Создать сводку Copilot", "browse_path_not_found": "Не удалось индексировать файлы из несуществующей папки: {0}", - "license_terms": "Расширение C/C++ можно использовать только с Microsoft Visual Studio, Visual Studio для Mac, Visual Studio Code, Azure DevOps, Team Foundation Server и более поздними продуктами и службами Майкрософт для разработки и тестирования приложений." + "license_terms": "Расширение C/C++ можно использовать только с Microsoft Visual Studio, Visual Studio для Mac, Visual Studio Code, Azure DevOps, Team Foundation Server и последующими продуктами и службами Майкрософт, предназначенными для разработки и тестирования приложений." } \ No newline at end of file diff --git a/Extension/i18n/rus/ui/settings.html.i18n.json b/Extension/i18n/rus/ui/settings.html.i18n.json index dbf214b6e..ec6729288 100644 --- a/Extension/i18n/rus/ui/settings.html.i18n.json +++ b/Extension/i18n/rus/ui/settings.html.i18n.json @@ -67,10 +67,10 @@ "limit.symbols.checkbox": "При значении {0} (или если установлен флажок) анализатор тегов будет анализировать только файлы кода, прямо или косвенно включаемые исходным файлом в {1}. При значении {2} (или если флажок не установлен) анализатор тегов будет анализировать все файлы кода, найденные по путям, указанным в списке {3}.", "database.filename": "Обзор: имя файла базы данных", "database.filename.description": "Путь к создаваемой базе данных символов. Этот параметр указывает расширению расположение для сохранение базы данных символов анализатора тегов, отличное от используемого в этой рабочей области места хранения по умолчанию.Если указать относительный путь, он будет определяться относительно места хранения по умолчанию, а не от папки самой рабочей области. Чтобы указать путь относительно папки рабочей области, можно использовать переменную {0} (например, {1}).", - "recursiveIncludes.reduce": "Рекурсивные включения: приоритет", + "recursiveIncludes.reduce": "Recursive includes: reduce", "recursiveIncludes.reduce.description": "Задайте значение {0}, чтобы всегда уменьшать количество путей рекурсивного включения, предоставляемых для IntelliSense, только до тех путей, на которые в настоящее время ссылаются инструкции #include. Для этого необходимо сначала проанализировать файлы, чтобы определить, какие файлы включены. Задайте значение {1}, чтобы предоставить все пути рекурсивного включения для IntelliSense. Уменьшение количества путей рекурсивного включения может повысить производительность IntelliSense, если задействовано очень большое количество путей рекурсивного включения. Отсутствие уменьшения количества путей рекурсивного включения может улучшить производительность IntelliSense благодаря отказу от необходимости анализа файлов для определения того, какие пути включения следует предоставить.", "recursiveIncludes.priority": "Рекурсивные включения: приоритет", "recursiveIncludes.priority.description": "Приоритет путей рекурсивного включения. Если задано значение {0}, поиск путей рекурсивного включения будет выполняться до путей системного включения. Если задано значение {1}, поиск путей рекурсивного включения будет выполняться после путей системного включения.", - "recursiveIncludes.order": "Рекурсивные включения: приоритет", + "recursiveIncludes.order": "Recursive includes: order", "recursiveIncludes.order.description": "Порядок поиска подкаталогов в путях рекурсивного включения." } \ No newline at end of file diff --git a/Extension/i18n/trk/package.i18n.json b/Extension/i18n/trk/package.i18n.json index b0a3be21f..e4d7f638e 100644 --- a/Extension/i18n/trk/package.i18n.json +++ b/Extension/i18n/trk/package.i18n.json @@ -254,7 +254,7 @@ "c_cpp.configuration.hover.description": "Devre dışı bırakılırsa üzerine gelme ayrıntıları artık dil sunucusu tarafından sağlanmaz.", "c_cpp.configuration.vcpkg.enabled.markdownDescription": "[vcpkg bağımlılık yöneticisi](https://aka.ms/vcpkg/) için tümleştirme hizmetlerini etkinleştirin.", "c_cpp.configuration.addNodeAddonIncludePaths.markdownDescription": "`nan` ve `node-addon-api` bağımlılık olduğunda bunlardan ekleme yolları ekleyin.", - "c_cpp.configuration.copilotHover.markdownDescription": "`disabled` ise Hover'da Copilot bilgisi görünmez.", + "c_cpp.configuration.copilotHover.markdownDescription": "`disabled` durumunda, üzerine gelindiğinde 'Copilot özeti oluştur' seçeneği görüntülenmez.", "c_cpp.configuration.renameRequiresIdentifier.markdownDescription": "`true` ise, 'Sembolü Yeniden Adlandır' işlemi için geçerli bir C/C++ tanımlayıcısı gerekir.", "c_cpp.configuration.autocompleteAddParentheses.markdownDescription": "`true` ise otomatik tamamla özelliği, işlev çağrılarından sonra otomatik olarak `(` ekler. Bazı durumlarda `#editor.autoClosingBrackets#` ayarının değerine bağlı olarak `)` karakteri de eklenebilir.", "c_cpp.configuration.filesExclude.markdownDescription": "Klasörleri (ve `#C_Cpp.exclusionPolicy#` değiştirilirse dosyaları) hariç tutmak için glob desenlerini yapılandırın. Bunlar, C/C++ uzantısına özgüdür ve `#files.exclude#` öğesine ek olarak, ancak `#files.exclude#` öğesinden farklı olarak, geçerli çalışma alanı klasörünün dışındaki yollara da uygulanırlar ve Explorer görünümünden kaldırılmazlar. [Glob desenleri](https://code.visualstudio.com/docs/editor/codebasics#_advanced-search-options) ile ilgili daha fazla bilgi edinin.", diff --git a/Extension/i18n/trk/src/nativeStrings.i18n.json b/Extension/i18n/trk/src/nativeStrings.i18n.json index 9853b8227..e6969b9f5 100644 --- a/Extension/i18n/trk/src/nativeStrings.i18n.json +++ b/Extension/i18n/trk/src/nativeStrings.i18n.json @@ -319,5 +319,5 @@ "file_not_found_in_path2": "\"{0}\" compile_commands.json dosyaları içinde bulunamadı. Bu dosya yerine '{1}' klasöründeki c_cpp_properties.json dosyasında bulunan 'includePath' kullanılacak.", "copilot_hover_link": "Copilot özeti oluştur", "browse_path_not_found": "Mevcut olmayan klasörden dosyalar dizine alınamıyor: {0}", - "license_terms": "C/C++ uzantısı yalnızca uygulamalarınızı geliştirmek ve test etmek için Microsoft Visual Studio, Mac için Visual Studio, Visual Studio Code, Azure DevOps, Team Foundation Server ve ardıl Microsoft ürünleri ve hizmetleri ile kullanılabilir." + "license_terms": "C/C++ uzantısı, uygulamalarınızı geliştirmek ve test etmek için yalnızca Microsoft Visual Studio, Mac için Visual Studio, Visual Studio Code, Azure DevOps, Team Foundation Server ve sonraki Microsoft ürünleri ve hizmetleriyle kullanılabilir." } \ No newline at end of file diff --git a/Extension/i18n/trk/ui/settings.html.i18n.json b/Extension/i18n/trk/ui/settings.html.i18n.json index 308543187..8cd6537cf 100644 --- a/Extension/i18n/trk/ui/settings.html.i18n.json +++ b/Extension/i18n/trk/ui/settings.html.i18n.json @@ -67,10 +67,10 @@ "limit.symbols.checkbox": "{0} (veya işaretli) olduğunda, Etiket Ayrıştırıcı yalnızca {1} içindeki bir kaynak dosya tarafından doğrudan veya dolaylı olarak dahil edilen kod dosyalarını ayrıştırır. {2} olduğunda (veya işaretlenmediğinde), Etiket Ayrıştırıcı {3} listesinde belirtilen yollarda bulunan tüm kod dosyalarını ayrıştırır.", "database.filename": "Gözat: veritabanı dosya adı", "database.filename.description": "Oluşturulan sembol veritabanının yolu. Bu, uzantının Etiket Ayrıştırıcısının sembol veritabanının çalışma alanı varsayılan depolama konumundan başka bir yerde kaydedilmesini sağlar. Göreli yol belirtilirse, çalışma alanı klasörünün kendisi değil, çalışma alanının varsayılan depolama konumuyla göreli olarak yapılır. {0} değişkeni, çalışma alanı klasörüne göreli bir yol belirtmek için kullanılabilir (örneğin, {1}).", - "recursiveIncludes.reduce": "Özyinelemeli içerikler: öncelik", + "recursiveIncludes.reduce": "Recursive includes: reduce", "recursiveIncludes.reduce.description": "IntelliSense'e sağlanan özyinelemeli ekleme yollarının sayısını her zaman yalnızca o anda #include deyimleri tarafından başvurulan yollara indirgemek için {0} olarak ayarlayın. Bu, hangi dosyaların eklendiğini belirlemek için önce dosyaların ayrıştırılmasını gerektirir. IntelliSense'e tüm özyinelemeli ekleme yollarını sağlamak için {1} olarak ayarlayın. Özyinelemeli ekleme yollarının sayısının azaltılması, çok sayıda özyinelemeli ekleme yolu söz konusu olduğunda IntelliSense performansını artırabilir. Özyinelemeli ekleme yollarının sayısını azaltmamak, hangi ekleme yollarının sağlanacağını belirlemek için dosyaları ayrıştırma ihtiyacını ortadan kaldırarak IntelliSense performansını artırabilir.", "recursiveIncludes.priority": "Özyinelemeli içerikler: öncelik", "recursiveIncludes.priority.description": "Özyinelemeli ekleme yollarının önceliği. {0} olarak ayarlanırsa özyinelemeli ekleme yolları, sistem ekleme yollarından önce aranır. {1} olarak ayarlanırsa özyinelemeli ekleme yolları, sistem ekleme yollarından sonra aranır.", - "recursiveIncludes.order": "Özyinelemeli içerikler: öncelik", + "recursiveIncludes.order": "Recursive includes: order", "recursiveIncludes.order.description": "Özyinelemeli ekleme yolları altındaki alt dizinlerin aranma sırası." } \ No newline at end of file diff --git a/Extension/package.nls.json b/Extension/package.nls.json index a5a4586dc..81c5fb476 100644 --- a/Extension/package.nls.json +++ b/Extension/package.nls.json @@ -476,7 +476,7 @@ "c_cpp.configuration.autocomplete.markdownDescription": { "message": "Controls the auto-completion provider. If `disabled` and you want word-based completion, you will also need to set `\"[cpp]\": {\"editor.wordBasedSuggestions\": }` (and similarly for `c` and `cuda-cpp` languages).", "comment": [ - " {Locked=\"`disabled`\"} Markdown text between `` should not be translated or localized (they represent literal text) and the capitalization, spacing, and punctuation (including the ``) should not be altered -- except for text \"value\", which is a placeholder that should be translated." + "{Locked=\"`disabled`\"} {Locked=\"`\\\"[cpp]\\\": {\\\"editor.wordBasedSuggestions\\\": <\"} {Locked=\">}`\"} Locked=\"`c`\"} Locked=\"`cuda-cpp`\"}" ] }, "c_cpp.configuration.autocomplete.default.description": "Uses the active IntelliSense engine.", @@ -787,7 +787,7 @@ "c_cpp.configuration.copilotHover.markdownDescription": { "message": "If `disabled`, no 'Generate Copilot summary' option will appear on hover.", "comment": [ - " {Locked=\"`disabled`\"} Markdown text between `` should not be translated or localized (they represent literal text) and the capitalization, spacing, and punctuation (including the ``) should not be altered." + "{Locked=\"`disabled`\"} {Locked=\"Copilot\"}" ] }, "c_cpp.configuration.renameRequiresIdentifier.markdownDescription": { @@ -878,7 +878,10 @@ "c_cpp.debuggers.cppdbg.svdPath.description": "The full path to an embedded device's SVD file.", "c_cpp.debuggers.cppvsdbg.visualizerFile.description": ".natvis file to be used when debugging this process.", "c_cpp.debuggers.showDisplayString.description": "When a visualizerFile is specified, showDisplayString will enable the display string. Turning this option on can cause slower performance during debugging.", - "c_cpp.debuggers.environment.description": "Environment variables to add to the environment for the program. Example: [ { \"name\": \"config\", \"value\": \"Debug\" } ], not [ { \"config\": \"Debug\" } ].", + "c_cpp.debuggers.environment.description": { + "message": "Environment variables to add to the environment for the program. Example: [ { \"name\": \"config\", \"value\": \"Debug\" } ], not [ { \"config\": \"Debug\" } ].", + "comment": "{Locked=\"[ { \\\"name\": \\\"\"} {Locked=\"\\\", \\\"value\\\": \\\"\"} {Locked=\"\\\" } ]\"} {Locked=\"[ { \\\"\"} {Locked=\"\\\": \\\"\"} {Locked=\"\\\" } ]\"}" + }, "c_cpp.debuggers.envFile.description": "Absolute path to a file containing environment variable definitions. This file has key value pairs separated by an equals sign per line. E.g. KEY=VALUE.", "c_cpp.debuggers.additionalSOLibSearchPath.description": "Semicolon separated list of directories to use to search for .so files. Example: \"c:\\dir1;c:\\dir2\".", "c_cpp.debuggers.MIMode.description": "Indicates the console debugger that the MIDebugEngine will connect to. Allowed values are \"gdb\" \"lldb\".", @@ -1003,22 +1006,32 @@ "c_cpp.walkthrough.set.up.title": "Set up your C++ Environment", "c_cpp.walkthrough.activating.description": "Activating the C++ extension to determine whether your C++ Environment has been set up.\nActivating Extension...", "c_cpp.walkthrough.no.compilers.windows.description": "We could not find a C++ compiler on your machine, which is required to use the C++ extension. Follow the instructions on the right to install one, then click “Find my new Compiler” below.\n[Find my new Compiler](command:C_Cpp.RescanCompilers?%22walkthrough%22)", - "c_cpp.walkthrough.no.compilers.description": "We could not find a C++ compiler on your machine, which is required to use the C++ extension. Either select “Install a C++ Compiler” to have a compiler installed for you or follow the instructions on the right to install one, then click “Find my new Compiler” below.\n[Install a C++ Compiler](command:C_Cpp.InstallCompiler?%22walkthrough%22)\n[Find my new Compiler](command:C_Cpp.RescanCompilers?%22walkthrough%22)", + "c_cpp.walkthrough.no.compilers.description": { + "message": "We could not find a C++ compiler on your machine, which is required to use the C++ extension. Either select “Install a C++ Compiler” to have a compiler installed for you or follow the instructions on the right to install one, then click “Find my new Compiler” below.\n[Install a C++ Compiler](command:C_Cpp.InstallCompiler?%22walkthrough%22)\n[Find my new Compiler](command:C_Cpp.RescanCompilers?%22walkthrough%22)", + "comment": [ + "{Locked=\"C++\"} {Locked=\"\\\n[\"} {Locked=\"](command:C_Cpp.InstallCompiler?%22walkthrough%22)\\\n[\"} {Locked=\"](command:C_Cpp.RescanCompilers?%22walkthrough%22)\"}" + ] + }, "c_cpp.walkthrough.compilers.found.description": "The C++ extension works with a C++ compiler. Select one from those already on your machine by clicking the button below.\n[Select my Default Compiler](command:C_Cpp.SelectIntelliSenseConfiguration?%22walkthrough%22)", "c_cpp.walkthrough.compilers.found.altText": "Image showing the select a default compiler quickpick and the list of compilers found on the users machine, one of which is selected.", "c_cpp.walkthrough.create.cpp.file.title": "Create a C++ file", - "c_cpp.walkthrough.create.cpp.file.description": "[Open](command:toSide:workbench.action.files.openFile) or [create](command:toSide:workbench.action.files.newUntitledFile?%7B%22languageId%22%3A%22cpp%22%7D) a C++ file. Be sure to save it with the \".cpp\" extension, such as \"helloworld.cpp\". \n[Create a C++ File](command:toSide:workbench.action.files.newUntitledFile?%7B%22languageId%22%3A%22cpp%22%7D)", + "c_cpp.walkthrough.create.cpp.file.description": { + "message": "[Open](command:toSide:workbench.action.files.openFile) or [create](command:toSide:workbench.action.files.newUntitledFile?%7B%22languageId%22%3A%22cpp%22%7D) a C++ file. Be sure to save it with the \".cpp\" extension, such as \"helloworld.cpp\". \n[Create a C++ File](command:toSide:workbench.action.files.newUntitledFile?%7B%22languageId%22%3A%22cpp%22%7D)", + "comment": [ + "{Locked=\"](command:toSide:workbench.action.files.openFile)\"} {Locked=\"](command:toSide:workbench.action.files.newUntitledFile?%7B%22languageId%22%3A%22cpp%22%7D)\"} {Locked=\"C++\"} {Locked=\".cpp\"} {Locked=\"\\\n[\"} {Locked=\"](command:toSide:workbench.action.files.newUntitledFile?%7B%22languageId%22%3A%22cpp%22%7D)\"}" + ] + }, "c_cpp.walkthrough.create.cpp.file.altText": "Open a C++ file or a folder with a C++ project.", "c_cpp.walkthrough.command.prompt.title": { "message": "Launch from the Developer Command Prompt for VS", "comment": [ - "Don't translate the product name \"Developer Command Prompt for VS\"." + "{Locked=\"Developer Command Prompt for VS\"}" ] }, "c_cpp.walkthrough.command.prompt.description": { "message": "When using the Microsoft Visual Studio C++ compiler, the C++ extension requires you to launch VS Code from the Developer Command Prompt for VS. Follow the instructions on the right to relaunch.\n[Reload Window](command:workbench.action.reloadWindow)", "comment": [ - "Don't translate the product name \"Developer Command Prompt for VS\"." + "{Locked=\"Visual Studio\"} {Locked=\"C++\"} {Locked=\"VS Code\"} {Locked=\"Developer Command Prompt for VS\"} {Locked=\"\\\n[\"} {Locked=\"](command:workbench.action.reloadWindow)\"}" ] }, "c_cpp.walkthrough.run.debug.title": "Run and debug your C++ file", @@ -1041,4 +1054,4 @@ "c_cpp.configuration.refactoring.includeHeader.never.description": "Never include the header file.", "c_cpp.languageModelTools.configuration.displayName": "C/C++ configuration", "c_cpp.languageModelTools.configuration.userDescription": "Configuration of the active C or C++ file, like language standard version and target platform." -} +} \ No newline at end of file diff --git a/Extension/src/nativeStrings.json b/Extension/src/nativeStrings.json index 9712c9244..83039aa97 100644 --- a/Extension/src/nativeStrings.json +++ b/Extension/src/nativeStrings.json @@ -482,5 +482,8 @@ "file_not_found_in_path2": "\"{0}\" not found in compile_commands.json files. 'includePath' from c_cpp_properties.json in folder '{1}' will be used for this file instead.", "copilot_hover_link": "Generate Copilot summary", "browse_path_not_found": "Unable to index files from non-existent folder: {0}", - "license_terms": "The C/C++ extension may be used only with Microsoft Visual Studio, Visual Studio for Mac, Visual Studio Code, Azure DevOps, Team Foundation Server, and successor Microsoft products and services to develop and test your applications." + "license_terms": { + "text": "The C/C++ extension may be used only with Microsoft Visual Studio, Visual Studio for Mac, Visual Studio Code, Azure DevOps, Team Foundation Server, and successor Microsoft products and services to develop and test your applications.", + "hint": "{Locked=\"C/C++\"} {Locked=\"Visual Studio\"} {Locked=\"Mac\"} {Locked=\"Visual Studio Code\"} {Locked=\"Azure DevOps\"} {Locked=\"Team Foundation Server\"}" + } } From 735d74175cac293e3fea50a05f891b10f9bb4599 Mon Sep 17 00:00:00 2001 From: Bob Brown Date: Wed, 16 Apr 2025 14:04:37 -0700 Subject: [PATCH 05/25] Add a message explaining why we couldn't find a quote-wrapped path (#13521) --- Extension/src/LanguageServer/configurations.ts | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/Extension/src/LanguageServer/configurations.ts b/Extension/src/LanguageServer/configurations.ts index f132d8739..94c349a11 100644 --- a/Extension/src/LanguageServer/configurations.ts +++ b/Extension/src/LanguageServer/configurations.ts @@ -1721,6 +1721,7 @@ export class CppProperties { for (const p of paths) { let pathExists: boolean = true; + let quotedPath: boolean = false; let resolvedPath: string = this.resolvePath(p); if (!resolvedPath) { continue; @@ -1728,7 +1729,10 @@ export class CppProperties { // Check if resolved path exists if (!fs.existsSync(resolvedPath)) { - if (assumeRelative && !path.isAbsolute(resolvedPath)) { + if (resolvedPath.match(/".*"/) !== null) { + pathExists = false; + quotedPath = true; + } else if (assumeRelative && !path.isAbsolute(resolvedPath)) { continue; } else if (!this.rootUri) { pathExists = false; @@ -1744,7 +1748,10 @@ export class CppProperties { } if (!pathExists) { - const message: string = localize('cannot.find', "Cannot find: {0}", resolvedPath); + let message: string = localize('cannot.find', "Cannot find: {0}", resolvedPath); + if (quotedPath) { + message += '. ' + localize('wrapped.with.quotes', 'Do not add extra quotes around paths.'); + } errors.push(message); continue; } @@ -2132,6 +2139,9 @@ export class CppProperties { badPath = `"${expandedPaths[0]}"`; } message = localize('cannot.find', "Cannot find: {0}", badPath); + if (incorrectExpandedPaths.some(p => p.match(/".*"/) !== null)) { + message += '.\n' + localize('wrapped.with.quotes', 'Do not add extra quotes around paths.'); + } newSquiggleMetrics.PathNonExistent++; } else { // Check for file versus path mismatches. From 04bc6c82949eb2bb2b7aa9777433d74acd417460 Mon Sep 17 00:00:00 2001 From: Bob Brown Date: Thu, 17 Apr 2025 11:12:26 -0700 Subject: [PATCH 06/25] No error message shown in config UI for invalid compilerPath (#13529) --- Extension/src/LanguageServer/configurations.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Extension/src/LanguageServer/configurations.ts b/Extension/src/LanguageServer/configurations.ts index 94c349a11..6870619b8 100644 --- a/Extension/src/LanguageServer/configurations.ts +++ b/Extension/src/LanguageServer/configurations.ts @@ -1612,7 +1612,7 @@ export class CppProperties { resolvedCompilerPath = which.sync(config.compilerPath, { nothrow: true }); } - if (resolvedCompilerPath === undefined) { + if (!resolvedCompilerPath) { resolvedCompilerPath = this.resolvePath(config.compilerPath); } const settings: CppSettings = new CppSettings(this.rootUri); From 799d09f41f5cb442df01a49bf75562a4075faf27 Mon Sep 17 00:00:00 2001 From: Sean McManus Date: Thu, 17 Apr 2025 12:51:30 -0700 Subject: [PATCH 07/25] Fix some loc bugs. (#13522) * Fix some loc bugs. * Fix newlines at end of files in json. --- Extension/.vscode/settings.json | 2 +- Extension/i18n/chs/ui/settings.html.i18n.json | 2 +- Extension/i18n/csy/ui/settings.html.i18n.json | 2 +- Extension/i18n/kor/ui/settings.html.i18n.json | 2 +- Extension/i18n/plk/ui/settings.html.i18n.json | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Extension/.vscode/settings.json b/Extension/.vscode/settings.json index 7c60adca7..ed43fe6a3 100644 --- a/Extension/.vscode/settings.json +++ b/Extension/.vscode/settings.json @@ -27,7 +27,7 @@ "editor.formatOnSave": true, "editor.defaultFormatter": "vscode.json-language-features", "editor.tabSize": 4, - "files.insertFinalNewline": true + "files.insertFinalNewline": false }, "[jsonc]": { "editor.formatOnSave": true, diff --git a/Extension/i18n/chs/ui/settings.html.i18n.json b/Extension/i18n/chs/ui/settings.html.i18n.json index f5fbbfbba..27c9452ad 100644 --- a/Extension/i18n/chs/ui/settings.html.i18n.json +++ b/Extension/i18n/chs/ui/settings.html.i18n.json @@ -13,7 +13,7 @@ "edit.configurations.json": "C/C++: 编辑配置(JSON)", "check.the.schema": "转到 {0},详细了解 C/C++ 属性。", "cpp.properties.schema.reference": "C/C++ 属性架构参考", - "view.schema.reference": "属性架构引用", + "view.schema.reference": "属性架构参考", "intellisense.configurations": "IntelliSense 配置", "intellisense.configurations.description": "使用此编辑器编辑在基础 {0} 文件中定义的 IntelliSense 设置。在此编辑器中所做的更改仅适用于所选的配置。要一次编辑多个配置,请转到 {1}。", "configuration.name": "配置名称", diff --git a/Extension/i18n/csy/ui/settings.html.i18n.json b/Extension/i18n/csy/ui/settings.html.i18n.json index 616896bec..4db56e852 100644 --- a/Extension/i18n/csy/ui/settings.html.i18n.json +++ b/Extension/i18n/csy/ui/settings.html.i18n.json @@ -72,5 +72,5 @@ "recursiveIncludes.priority": "Rekurzivní soubory k zahrnutí: priorita", "recursiveIncludes.priority.description": "Priorita cest rekurzivních souborů zahrnutí Pokud je nastavená hodnota {0}, budou se cesty rekurzivních souborů k zahrnutí prohledávat před cestami systémových souborů k zahrnutí. Pokud je nastavená hodnota {1}, budou se cesty rekurzivních souborů k zahrnutí prohledávat po cestách systémových souborů k zahrnutí.", "recursiveIncludes.order": "Recursive includes: order", - "recursiveIncludes.order.description": "Pořadí, ve kterém se prohledávají podadresáře v cestách rekurzivních souborů k zahrnutí" + "recursiveIncludes.order.description": "Pořadí, ve kterém se prohledávají podadresáře v cestách rekurzivních souborů k zahrnutí." } \ No newline at end of file diff --git a/Extension/i18n/kor/ui/settings.html.i18n.json b/Extension/i18n/kor/ui/settings.html.i18n.json index 7583df328..76a69e7d8 100644 --- a/Extension/i18n/kor/ui/settings.html.i18n.json +++ b/Extension/i18n/kor/ui/settings.html.i18n.json @@ -68,7 +68,7 @@ "database.filename": "찾아보기: 데이터베이스 파일 이름", "database.filename.description": "생성된 기호 데이터베이스의 경로입니다. 이 경로는 태그 파서의 기호 데이터베이스를 작업 영역의 기본 스토리지 위치가 아닌 다른 곳에 저장하도록 확장에 지시합니다. 상대 경로가 지정된 경우 작업 영역 폴더 자체가 아니라 작업 영역의 기본 스토리지 위치에 대해 상대적으로 만들어집니다. {0} 변수를 사용하여 작업 영역 폴더에 상대적인 경로를 지정할 수 있습니다(예: {1}).", "recursiveIncludes.reduce": "Recursive includes: reduce", - "recursiveIncludes.reduce.description": "intelliSense에 제공된 재귀 포함 경로의 수를 현재 #include 문에서 참조하는 경로로만 줄이려면 {0}(으)로 설정합니다. 이를 위해서는 포함된 파일을 확인하기 위해 먼저 파일을 구문 분석해야 합니다. IntelliSense에 대한 모든 재귀 포함 경로를 제공하려면 {1}(으)로 설정합니다. 재귀 포함 경로의 수를 줄이면 매우 많은 수의 재귀 포함 경로가 관련된 경우 IntelliSense 성능이 향상될 수 있습니다. 재귀 포함 경로의 수를 줄이지 않으면 제공할 포함 경로를 확인하기 위해 파일을 구문 분석할 필요가 없으므로 IntelliSense 성능을 향상시킬 수 있습니다.", + "recursiveIncludes.reduce.description": "IntelliSense에 제공된 재귀 포함 경로의 수를 현재 #include 문에서 참조하는 경로로만 줄이려면 {0}(으)로 설정합니다. 이를 위해서는 포함된 파일을 확인하기 위해 먼저 파일을 구문 분석해야 합니다. IntelliSense에 대한 모든 재귀 포함 경로를 제공하려면 {1}(으)로 설정합니다. 재귀 포함 경로의 수를 줄이면 매우 많은 수의 재귀 포함 경로가 관련된 경우 IntelliSense 성능이 향상될 수 있습니다. 재귀 포함 경로의 수를 줄이지 않으면 제공할 포함 경로를 확인하기 위해 파일을 구문 분석할 필요가 없으므로 IntelliSense 성능을 향상시킬 수 있습니다.", "recursiveIncludes.priority": "재귀 포함: 우선 순위", "recursiveIncludes.priority.description": "재귀 포함 경로의 우선 순위입니다. {0}(으)로 설정하면 재귀 포함 경로가 시스템 포함 경로 전에 검색됩니다. {1}(으)로 설정하면 시스템 포함 경로 후에 재귀 포함 경로가 검색됩니다.", "recursiveIncludes.order": "Recursive includes: order", diff --git a/Extension/i18n/plk/ui/settings.html.i18n.json b/Extension/i18n/plk/ui/settings.html.i18n.json index 549a0ba4a..050787215 100644 --- a/Extension/i18n/plk/ui/settings.html.i18n.json +++ b/Extension/i18n/plk/ui/settings.html.i18n.json @@ -12,7 +12,7 @@ "edit.configurations.in.json": "Edytuj konfiguracje w pliku JSON", "edit.configurations.json": "C/C++: edytuj konfiguracje (JSON)", "check.the.schema": "Dowiedz się więcej o właściwościach języka C/C++, przechodząc do: {0}.", - "cpp.properties.schema.reference": "Odwołanie do schematu właściwości języka C/C++", + "cpp.properties.schema.reference": "Odwołanie do schematu właściwości C/C++", "view.schema.reference": "Odwołanie do schematu właściwości", "intellisense.configurations": "Konfiguracje funkcji IntelliSense", "intellisense.configurations.description": "Użyj tego edytora, aby edytować ustawienia funkcji IntelliSense zdefiniowane w źródłowym pliku {0}. Zmiany wprowadzone w tym edytorze dotyczą tylko wybranej konfiguracji. Aby edytować wiele konfiguracji naraz, przejdź do: {1}.", From 97ef1aa99d1bf7128f121d748e2550df455662f3 Mon Sep 17 00:00:00 2001 From: Bob Brown Date: Thu, 17 Apr 2025 16:52:55 -0700 Subject: [PATCH 08/25] Don't show bogus errors for compilerPath + args in config UI (#13531) --- Extension/src/LanguageServer/configurations.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/Extension/src/LanguageServer/configurations.ts b/Extension/src/LanguageServer/configurations.ts index 6870619b8..26bbd86ec 100644 --- a/Extension/src/LanguageServer/configurations.ts +++ b/Extension/src/LanguageServer/configurations.ts @@ -1617,7 +1617,11 @@ export class CppProperties { } const settings: CppSettings = new CppSettings(this.rootUri); const compilerPathAndArgs: util.CompilerPathAndArgs = util.extractCompilerPathAndArgs(!!settings.legacyCompilerArgsBehavior, resolvedCompilerPath); + + // compilerPath + args in the same string isn't working yet. + const skipFullCommandString = !compilerPathAndArgs.compilerName && resolvedCompilerPath.includes(" "); if (resolvedCompilerPath + && !skipFullCommandString // Don't error cl.exe paths because it could be for an older preview build. && compilerPathAndArgs.compilerName.toLowerCase() !== "cl.exe" && compilerPathAndArgs.compilerName.toLowerCase() !== "cl") { @@ -1795,7 +1799,7 @@ export class CppProperties { if (!this.configurationJson) { return; } - if ((this.configurationJson.enableConfigurationSquiggles !== undefined && !this.configurationJson.enableConfigurationSquiggles) || + if ((this.configurationJson.enableConfigurationSquiggles === false) || (this.configurationJson.enableConfigurationSquiggles === undefined && !settings.defaultEnableConfigurationSquiggles)) { this.diagnosticCollection.clear(); return; From c21a214fc473bf92a43fe6a6e9b70a1566b160c7 Mon Sep 17 00:00:00 2001 From: Sean McManus Date: Mon, 21 Apr 2025 13:58:34 -0700 Subject: [PATCH 09/25] Fix translations export. (#13539) --- Extension/package.nls.json | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Extension/package.nls.json b/Extension/package.nls.json index 81c5fb476..262dd3f26 100644 --- a/Extension/package.nls.json +++ b/Extension/package.nls.json @@ -880,7 +880,9 @@ "c_cpp.debuggers.showDisplayString.description": "When a visualizerFile is specified, showDisplayString will enable the display string. Turning this option on can cause slower performance during debugging.", "c_cpp.debuggers.environment.description": { "message": "Environment variables to add to the environment for the program. Example: [ { \"name\": \"config\", \"value\": \"Debug\" } ], not [ { \"config\": \"Debug\" } ].", - "comment": "{Locked=\"[ { \\\"name\": \\\"\"} {Locked=\"\\\", \\\"value\\\": \\\"\"} {Locked=\"\\\" } ]\"} {Locked=\"[ { \\\"\"} {Locked=\"\\\": \\\"\"} {Locked=\"\\\" } ]\"}" + "comment": [ + "{Locked=\"[ { \\\"name\": \\\"\"} {Locked=\"\\\", \\\"value\\\": \\\"\"} {Locked=\"\\\" } ]\"} {Locked=\"[ { \\\"\"} {Locked=\"\\\": \\\"\"} {Locked=\"\\\" } ]\"}" + ] }, "c_cpp.debuggers.envFile.description": "Absolute path to a file containing environment variable definitions. This file has key value pairs separated by an equals sign per line. E.g. KEY=VALUE.", "c_cpp.debuggers.additionalSOLibSearchPath.description": "Semicolon separated list of directories to use to search for .so files. Example: \"c:\\dir1;c:\\dir2\".", From ab79eedf6fc81d3f02000e5ef0833a0d771e4bb2 Mon Sep 17 00:00:00 2001 From: Sean McManus Date: Mon, 21 Apr 2025 17:20:19 -0700 Subject: [PATCH 10/25] Localization update (#13540) * Localization - Translated Strings * Fixes. --- .../LanguageServer/configurations.i18n.json | 1 + Extension/i18n/chs/ui/settings.html.i18n.json | 4 +-- .../LanguageServer/configurations.i18n.json | 1 + Extension/i18n/cht/ui/settings.html.i18n.json | 4 +-- .../LanguageServer/configurations.i18n.json | 1 + Extension/i18n/csy/ui/settings.html.i18n.json | 4 +-- .../LanguageServer/configurations.i18n.json | 1 + Extension/i18n/deu/ui/settings.html.i18n.json | 4 +-- .../LanguageServer/configurations.i18n.json | 1 + Extension/i18n/esn/ui/settings.html.i18n.json | 4 +-- .../LanguageServer/configurations.i18n.json | 1 + Extension/i18n/fra/ui/settings.html.i18n.json | 4 +-- .../LanguageServer/configurations.i18n.json | 1 + Extension/i18n/ita/ui/settings.html.i18n.json | 4 +-- .../LanguageServer/configurations.i18n.json | 1 + Extension/i18n/jpn/ui/settings.html.i18n.json | 4 +-- .../LanguageServer/configurations.i18n.json | 1 + Extension/i18n/kor/src/common.i18n.json | 2 +- Extension/i18n/kor/src/expand.i18n.json | 4 +-- Extension/i18n/kor/src/main.i18n.json | 2 +- .../i18n/kor/src/nativeStrings.i18n.json | 36 +++++++++---------- Extension/i18n/kor/src/platform.i18n.json | 2 +- Extension/i18n/kor/ui/settings.html.i18n.json | 18 +++++----- .../LanguageServer/configurations.i18n.json | 1 + Extension/i18n/plk/ui/settings.html.i18n.json | 4 +-- .../LanguageServer/configurations.i18n.json | 1 + Extension/i18n/ptb/ui/settings.html.i18n.json | 4 +-- .../LanguageServer/configurations.i18n.json | 1 + Extension/i18n/rus/ui/settings.html.i18n.json | 4 +-- Extension/i18n/trk/package.i18n.json | 2 +- .../LanguageServer/configurations.i18n.json | 1 + Extension/i18n/trk/ui/settings.html.i18n.json | 4 +-- 32 files changed, 70 insertions(+), 57 deletions(-) diff --git a/Extension/i18n/chs/src/LanguageServer/configurations.i18n.json b/Extension/i18n/chs/src/LanguageServer/configurations.i18n.json index e619310f5..a2a854e4c 100644 --- a/Extension/i18n/chs/src/LanguageServer/configurations.i18n.json +++ b/Extension/i18n/chs/src/LanguageServer/configurations.i18n.json @@ -14,6 +14,7 @@ "cannot.find": "无法找到: {0}", "cannot.resolve.compiler.path": "输入无效,无法解析编译器路径", "path.is.not.a.file": "路径不是文件: {0}", + "wrapped.with.quotes": "Do not add extra quotes around paths.", "path.is.not.a.directory": "路径不是目录: {0}", "duplicate.name": "{0} 重复。配置名称应是唯一的。", "multiple.paths.not.allowed": "不允许使用多个路径。", diff --git a/Extension/i18n/chs/ui/settings.html.i18n.json b/Extension/i18n/chs/ui/settings.html.i18n.json index 27c9452ad..742da60e7 100644 --- a/Extension/i18n/chs/ui/settings.html.i18n.json +++ b/Extension/i18n/chs/ui/settings.html.i18n.json @@ -67,10 +67,10 @@ "limit.symbols.checkbox": "如果为 {0} (或已勾选),则标记分析器将仅分析在 {1} 中由源文件直接或间接包含的代码文件。如果为 {2} (或未选中),标记分析器将分析在 {3} 列表内指定路径中找到的所有代码文件。", "database.filename": "浏览: 数据库文件名", "database.filename.description": "所生成的符号数据库的路径。这指示扩展将标记分析器的符号数据库保存在工作区默认存储位置以外的其他位置。如果指定了相对路径,则它将相对于工作区的默认存储位置(而不是工作区文件夹本身)。{0} 变量可用于指定相对于工作区文件夹的路径(例如 {1})。", - "recursiveIncludes.reduce": "Recursive includes: reduce", + "recursiveIncludes.reduce": "递归包括: 缩减", "recursiveIncludes.reduce.description": "设置为 {0} 可将提供给 IntelliSense 的递归包含路径数减少到仅限当前由 #include 语句引用的路径。这需要首先分析文件以确定包含哪些文件。设置为 {1} 可将所有递归包含路径提供给 IntelliSense。当涉及到大量递归包含路径时,减少递归包含路径的数量可能会提高 IntelliSense 性能。如果不减少递归包含路径的数量,则可以通过避免需要分析文件以确定要提供的包含路径来提高 IntelliSense 性能。", "recursiveIncludes.priority": "递归包括: 优先级", "recursiveIncludes.priority.description": "递归包含路径的优先级。如果设置为 {0},则将在系统包含路径之前搜索递归包含路径。如果设置为 {1},则将在系统包含路径之后搜索递归包含路径。", - "recursiveIncludes.order": "Recursive includes: order", + "recursiveIncludes.order": "递归包括: 顺序", "recursiveIncludes.order.description": "搜索递归包含路径下子目录的顺序。" } \ No newline at end of file diff --git a/Extension/i18n/cht/src/LanguageServer/configurations.i18n.json b/Extension/i18n/cht/src/LanguageServer/configurations.i18n.json index f34fb3277..ab3ad8dec 100644 --- a/Extension/i18n/cht/src/LanguageServer/configurations.i18n.json +++ b/Extension/i18n/cht/src/LanguageServer/configurations.i18n.json @@ -14,6 +14,7 @@ "cannot.find": "找不到: {0}", "cannot.resolve.compiler.path": "輸入無效,無法解析編譯器路徑", "path.is.not.a.file": "路徑不是檔案: {0}", + "wrapped.with.quotes": "Do not add extra quotes around paths.", "path.is.not.a.directory": "路徑不是目錄: {0}", "duplicate.name": "{0} 重複。組態名稱應該是唯一的。", "multiple.paths.not.allowed": "不允許使用多個路徑。", diff --git a/Extension/i18n/cht/ui/settings.html.i18n.json b/Extension/i18n/cht/ui/settings.html.i18n.json index f5b50e708..8cabb918a 100644 --- a/Extension/i18n/cht/ui/settings.html.i18n.json +++ b/Extension/i18n/cht/ui/settings.html.i18n.json @@ -67,10 +67,10 @@ "limit.symbols.checkbox": "若為 {0} (或已選取),標籤剖析器只會剖析 {1} 中原始程式檔直接或間接包含的程式碼檔。若為 {2} (或未選取),標籤剖析器會剖析在 {3} 清單中的指定路徑找到的所有程式碼檔。", "database.filename": "瀏覽: 資料庫檔案名稱", "database.filename.description": "產生符號資料庫路徑。這會指示延伸模組將標籤剖析器的符號資料庫儲存在工作區預設儲存位置以外的某處。如果指定了相對路徑,就會是相對於工作區預設儲存位置 (非工作區資料夾本身) 的路徑。{0} 變數可用於指定相對於工作區資料夾的路徑 (例如 {1})。", - "recursiveIncludes.reduce": "Recursive includes: reduce", + "recursiveIncludes.reduce": "遞迴包含: 減少", "recursiveIncludes.reduce.description": "設定為 {0},可使 IntelliSense 僅提供目前由 #include 陳述式參考的遞迴包含路徑。這需要先剖析檔案,以確定包含哪些檔案。設定為 {1} 以將所有遞迴包含路徑提供給 IntelliSense。當涉及非常大量的遞迴包含路徑時,減少遞迴包含路徑數目可能會改善 IntelliSense 的效能。不減少遞迴包含路徑的數量,可避免需要剖析檔案以決定要提供哪些包含路徑,從而 IntelliSense 效能。", "recursiveIncludes.priority": "遞迴包含: 優先順序", "recursiveIncludes.priority.description": "遞迴包含路徑的優先順序。如果設定為 {0},則會在系統包含路徑之前搜尋遞迴包含路徑。如果設定為 {1},則會在系統包含路徑之後搜尋遞迴包含路徑。", - "recursiveIncludes.order": "Recursive includes: order", + "recursiveIncludes.order": "遞迴包含: 順序", "recursiveIncludes.order.description": "搜尋遞迴包含路徑下子目錄的順序。" } \ No newline at end of file diff --git a/Extension/i18n/csy/src/LanguageServer/configurations.i18n.json b/Extension/i18n/csy/src/LanguageServer/configurations.i18n.json index 29757d38e..dbfbc3142 100644 --- a/Extension/i18n/csy/src/LanguageServer/configurations.i18n.json +++ b/Extension/i18n/csy/src/LanguageServer/configurations.i18n.json @@ -14,6 +14,7 @@ "cannot.find": "Nepovedlo se najít: {0}", "cannot.resolve.compiler.path": "Neplatný vstup, nedá se přeložit cesta ke kompilátoru.", "path.is.not.a.file": "Cesta není soubor: {0}", + "wrapped.with.quotes": "Do not add extra quotes around paths.", "path.is.not.a.directory": "Cesta není adresář: {0}", "duplicate.name": "{0} je duplicitní. Název konfigurace by měl být jedinečný.", "multiple.paths.not.allowed": "Více cest není povoleno.", diff --git a/Extension/i18n/csy/ui/settings.html.i18n.json b/Extension/i18n/csy/ui/settings.html.i18n.json index 4db56e852..7e2b47aec 100644 --- a/Extension/i18n/csy/ui/settings.html.i18n.json +++ b/Extension/i18n/csy/ui/settings.html.i18n.json @@ -67,10 +67,10 @@ "limit.symbols.checkbox": "Když se nastaví na {0} (nebo zaškrtne), analyzátor značek bude parsovat jen soubory kódů, které přímo nebo nepřímo zahrnul zdrojový soubor v {1}. Když se nastaví na {2} (nebo nezaškrtne), analyzátor značek bude parsovat všechny soubory kódů nalezené na cestách zadaných v seznamu {3}.", "database.filename": "Procházení: název souboru databáze", "database.filename.description": "Cesta k vygenerované databázi symbolů. Na základě této možnosti bude rozšíření ukládat databázi symbolů analyzátoru značek někam jinam než do výchozího umístění úložiště pracovního prostoru. Pokud se zadá relativní cesta, bude relativní vzhledem k výchozímu umístění úložiště pracovního prostoru, nikoli k samotné složce pracovního prostoru. Pokud chcete zadat cestu relativní ke složce pracovního prostoru (třeba {1}), dá se použít proměnná {0}.", - "recursiveIncludes.reduce": "Recursive includes: reduce", + "recursiveIncludes.reduce": "Rekurzivní soubory k zahrnutí: snížení", "recursiveIncludes.reduce.description": "Nastavením na {0} se počet cest rekurzivních souborů k zahrnutí poskytovaných funkci IntelliSense vždy sníží pouze na ty cesty, na které aktuálně odkazují příkazy #include. K tomu je potřeba nejdříve analyzovat soubory a zjistit, které soubory jsou zahrnuty. Nastavením na {1} poskytnete funkci IntelliSense všechny cesty rekurzivních souborů k zahrnutí. Snížení počtu cest rekurzivních souborů k zahrnutí může zlepšit výkon funkce IntelliSense, pokud se jedná o velmi velký počet cest souborů k zahrnutí. Nesnižování počtu cest rekurzivních souborů k zahrnutí může zlepšit výkon funkce IntelliSense, protože se vyhnete nutnosti analyzovat soubory a určit, které cesty souborů k zahrnutí je třeba poskytnout.", "recursiveIncludes.priority": "Rekurzivní soubory k zahrnutí: priorita", "recursiveIncludes.priority.description": "Priorita cest rekurzivních souborů zahrnutí Pokud je nastavená hodnota {0}, budou se cesty rekurzivních souborů k zahrnutí prohledávat před cestami systémových souborů k zahrnutí. Pokud je nastavená hodnota {1}, budou se cesty rekurzivních souborů k zahrnutí prohledávat po cestách systémových souborů k zahrnutí.", - "recursiveIncludes.order": "Recursive includes: order", + "recursiveIncludes.order": "Rekurzivní soubory k zahrnutí: pořadí", "recursiveIncludes.order.description": "Pořadí, ve kterém se prohledávají podadresáře v cestách rekurzivních souborů k zahrnutí." } \ No newline at end of file diff --git a/Extension/i18n/deu/src/LanguageServer/configurations.i18n.json b/Extension/i18n/deu/src/LanguageServer/configurations.i18n.json index b61b045b3..75dbd822b 100644 --- a/Extension/i18n/deu/src/LanguageServer/configurations.i18n.json +++ b/Extension/i18n/deu/src/LanguageServer/configurations.i18n.json @@ -14,6 +14,7 @@ "cannot.find": "Nicht gefunden: {0}", "cannot.resolve.compiler.path": "Ungültige Eingabe, Compilerpfad kann nicht aufgelöst werden.", "path.is.not.a.file": "Der Pfad ist keine Datei: {0}", + "wrapped.with.quotes": "Do not add extra quotes around paths.", "path.is.not.a.directory": "Der Pfad ist kein Verzeichnis: {0}", "duplicate.name": "\"{0}\" ist ein Duplikat. Der Konfigurationsname muss eindeutig sein.", "multiple.paths.not.allowed": "Mehrere Pfade sind nicht zulässig.", diff --git a/Extension/i18n/deu/ui/settings.html.i18n.json b/Extension/i18n/deu/ui/settings.html.i18n.json index 948077bfe..c46706107 100644 --- a/Extension/i18n/deu/ui/settings.html.i18n.json +++ b/Extension/i18n/deu/ui/settings.html.i18n.json @@ -67,10 +67,10 @@ "limit.symbols.checkbox": "Wenn {0} (oder aktiviert) ist, analysiert der Tagparser nur Codedateien, die direkt oder indirekt von einer Quelldatei in {1} eingeschlossen wurden. Wenn {2} (oder nicht aktiviert) ist, analysiert der Tagparser alle Codedateien, die in den in der {3} Liste angegebenen Pfaden gefunden wurden.", "database.filename": "Durchsuchen: Datenbankdateiname", "database.filename.description": "Der Pfad zur generierten Symboldatenbank. Hiermit wird die Erweiterung angewiesen, die Symboldatenbank des Tagparsers an einem anderen Speicherort als dem Standardspeicherort des Arbeitsbereichs zu speichern. Bei Angabe eines relativen Pfads wird dieser relativ zum Standardspeicherort des Arbeitsbereichs und nicht zum Arbeitsbereichsordner selbst erstellt. Die Variable „{0}“ kann verwendet werden, um einen Pfad relativ zum Arbeitsbereichsordner (Beispiel: {1}) anzugeben.", - "recursiveIncludes.reduce": "Recursive includes: reduce", + "recursiveIncludes.reduce": "Rekursive Umfasst: Reduzieren", "recursiveIncludes.reduce.description": "Legen Sie diese Option auf „{0}“ fest, um die Anzahl der rekursiven Includepfade, die für IntelliSense bereitgestellt werden, auf die Pfade zu verringern, auf die derzeit von #include-Anweisungen verwiesen wird. Dazu müssen zuerst die Dateien analysiert werden, um zu bestimmen, welche Dateien eingeschlossen werden. Legen Sie diese Option auf „{1}“ fest, um alle rekursiven Includepfade für IntelliSense bereitzustellen. Wenn Sie die Anzahl rekursiver Includepfade verringern, kann sich die Leistung von IntelliSense verbessern, wenn eine sehr große Anzahl rekursiver Includepfade betroffen ist. Wenn Sie die Anzahl rekursiver Includepfade nicht verringern, kann die Leistung von IntelliSense verbessert werden, da die Dateien nicht analysiert werden müssen, um zu bestimmen, welche Includepfade bereitgestellt werden sollen.", "recursiveIncludes.priority": "„Rekursiv“ umfasst: Priorität", "recursiveIncludes.priority.description": "Die Priorität rekursiver Includepfade. Wenn sie auf „{0}“ festgelegt ist, werden die rekursiven Includepfade vor den systemseitigen Includepfaden durchsucht. Wenn sie auf „{1}“ festgelegt ist, werden die rekursiven Includepfade nach den systemseitigen Includepfaden durchsucht.", - "recursiveIncludes.order": "Recursive includes: order", + "recursiveIncludes.order": "Rekursiv umfasst: Reihenfolge", "recursiveIncludes.order.description": "Die Reihenfolge, in der Unterverzeichnisse unter rekursiven Includepfaden durchsucht werden." } \ No newline at end of file diff --git a/Extension/i18n/esn/src/LanguageServer/configurations.i18n.json b/Extension/i18n/esn/src/LanguageServer/configurations.i18n.json index 9e8abce37..dd3789012 100644 --- a/Extension/i18n/esn/src/LanguageServer/configurations.i18n.json +++ b/Extension/i18n/esn/src/LanguageServer/configurations.i18n.json @@ -14,6 +14,7 @@ "cannot.find": "No se encuentra {0}", "cannot.resolve.compiler.path": "Entrada no válida. No se puede resolver la ruta de acceso del compilador.", "path.is.not.a.file": "La ruta de acceso no es un archivo: {0}", + "wrapped.with.quotes": "Do not add extra quotes around paths.", "path.is.not.a.directory": "La ruta de acceso no es un directorio: {0}", "duplicate.name": "{0} es un duplicado. El nombre de la configuración debe ser único.", "multiple.paths.not.allowed": "No se permiten varias rutas de acceso.", diff --git a/Extension/i18n/esn/ui/settings.html.i18n.json b/Extension/i18n/esn/ui/settings.html.i18n.json index 6e8c69516..f187f684e 100644 --- a/Extension/i18n/esn/ui/settings.html.i18n.json +++ b/Extension/i18n/esn/ui/settings.html.i18n.json @@ -67,10 +67,10 @@ "limit.symbols.checkbox": "Cuando {0} (o activado), el analizador de etiquetas solo analizará los archivos de código que un archivo de código fuente haya incluido directa o indirectamente en {1}. Cuando {2} (o no está activado), el analizador de etiquetas analizará todos los archivos de código que se encuentran en las rutas de acceso especificadas en la lista de {3} .", "database.filename": "Examinar: nombre del archivo de base de datos", "database.filename.description": "La ruta de acceso a la base de datos de símbolos generada. Esto indica a la extensión que guarde la base de datos de símbolos del analizador de etiquetas en una ubicación distinta de la ubicación de almacenamiento predeterminada del área de trabajo. Si se especifica una ruta de acceso relativa, será relativa a la ubicación de almacenamiento predeterminada del área de trabajo, no a la carpeta del área de trabajo en sí. La variable {0} se puede usar para especificar una ruta de acceso relativa a la carpeta del área de trabajo (por ejemplo, {1}).", - "recursiveIncludes.reduce": "Recursive includes: reduce", + "recursiveIncludes.reduce": "Inclusiones recursivas: orden: reducción", "recursiveIncludes.reduce.description": "Establézcalo en {0} para reducir siempre el número de rutas de inclusión recursivas proporcionadas a IntelliSense solo a aquellas rutas a las que hacen referencia actualmente las instrucciones #include. Esto requiere primero analizar los archivos para determinar qué archivos se incluyen. Establézcalo en {1} para proporcionar todas las rutas de inclusión recursivas a IntelliSense. Reducir el número de rutas de inclusiones recursivas puede mejorar el rendimiento de IntelliSense cuando hay un gran número de rutas de inclusión recursivas involucradas. No reducir el número de rutas de inclusión recursivas puede mejorar el rendimiento de IntelliSense al evitar la necesidad de analizar archivos para determinar qué rutas de inclusión proporcionar.", "recursiveIncludes.priority": "Inclusión recursiva: prioridad", "recursiveIncludes.priority.description": "La prioridad de las rutas de acceso de inclusión recursivas. Si se establece en {0}, se buscarán las rutas de inclusión recursivas antes que las rutas de inclusión del sistema. Si se establece en {1}, se buscarán las rutas de inclusión recursivas después de las rutas de inclusión del sistema.", - "recursiveIncludes.order": "Recursive includes: order", + "recursiveIncludes.order": "Inclusiones recursivas: orden", "recursiveIncludes.order.description": "El orden en el que se buscan los subdirectorios en las rutas de acceso de inclusión recursivas." } \ No newline at end of file diff --git a/Extension/i18n/fra/src/LanguageServer/configurations.i18n.json b/Extension/i18n/fra/src/LanguageServer/configurations.i18n.json index c3994eb97..b0b131957 100644 --- a/Extension/i18n/fra/src/LanguageServer/configurations.i18n.json +++ b/Extension/i18n/fra/src/LanguageServer/configurations.i18n.json @@ -14,6 +14,7 @@ "cannot.find": "{0} introuvable", "cannot.resolve.compiler.path": "Entrée non valide, impossible de résoudre le chemin du compilateur", "path.is.not.a.file": "Le chemin n'est pas un fichier : {0}", + "wrapped.with.quotes": "Do not add extra quotes around paths.", "path.is.not.a.directory": "Le chemin n'est pas un répertoire : {0}", "duplicate.name": "{0} est dupliqué. Le nom de configuration doit être unique.", "multiple.paths.not.allowed": "Il est interdit d’utiliser plusieurs chemin d’accès.", diff --git a/Extension/i18n/fra/ui/settings.html.i18n.json b/Extension/i18n/fra/ui/settings.html.i18n.json index 576abe7bf..616c1d9e2 100644 --- a/Extension/i18n/fra/ui/settings.html.i18n.json +++ b/Extension/i18n/fra/ui/settings.html.i18n.json @@ -67,10 +67,10 @@ "limit.symbols.checkbox": "Lorsque {0} (ou activé), l’analyseur de balise analyse uniquement les fichiers de code qui ont été inclus directement ou indirectement par un fichier source dans {1}. Lorsque {2} (ou non activé), l’analyseur de balise analyse tous les fichiers de code trouvés dans les chemins d’accès spécifiés dans la liste {3} .", "database.filename": "Parcourir : nom de fichier de base de données", "database.filename.description": "Chemin de la base de données de symboles générée. Cela indique à l'extension d'enregistrer la base de données de symboles de l'analyseur de balises à un emplacement autre que l'emplacement de stockage par défaut de l'espace de travail. Si un chemin relatif est spécifié, il est relatif à l'emplacement de stockage par défaut de l'espace de travail et non au dossier d'espace de travail lui-même. La variable {0} peut être utilisée pour spécifier un chemin relatif au dossier d'espace de travail (par ex., {1}).", - "recursiveIncludes.reduce": "Recursive includes: reduce", + "recursiveIncludes.reduce": "Inclusions récursives : réduire", "recursiveIncludes.reduce.description": "Affectez la valeur {0} pour toujours réduire le nombre de chemins d’accès d’inclusion récursive fournis à IntelliSense uniquement aux chemins actuellement référencés par des instructions #include. Pour cela, vous devez d’abord analyser les fichiers pour déterminer lesquels sont inclus. Affectez la valeur {1} pour fournir tous les chemins d’accès d’inclusion récursive à IntelliSense. La réduction du nombre de chemins d’accès d’inclusion récursive peut améliorer les performances d’IntelliSense lorsque de très nombreux chemins d’accès d’inclusion récursive sont impliqués. Ne pas réduire le nombre de chemins d’accès d’inclusion récursive peut améliorer les performances d’IntelliSense en évitant la nécessité d’analyser les fichiers pour déterminer quels chemins d’accès d’inclusion fournir.", "recursiveIncludes.priority": "Inclusions récursives : priorité", "recursiveIncludes.priority.description": "Priorité des chemins d’accès d’inclusion récursive. Si la valeur est {0}, les chemins d’accès d’inclusion récursive seront recherchés avant les chemins d’accès d’inclusion système. Si la valeur est {1}, les chemins d’accès d’inclusion récursive seront recherchés après les chemins d’accès d’inclusion système.", - "recursiveIncludes.order": "Recursive includes: order", + "recursiveIncludes.order": "Inclusions récursives : trier", "recursiveIncludes.order.description": "Ordre dans lequel les sous-répertoires sous récursifs incluent des chemins d’accès sont recherchés." } \ No newline at end of file diff --git a/Extension/i18n/ita/src/LanguageServer/configurations.i18n.json b/Extension/i18n/ita/src/LanguageServer/configurations.i18n.json index 4722976d4..9ff2af2c3 100644 --- a/Extension/i18n/ita/src/LanguageServer/configurations.i18n.json +++ b/Extension/i18n/ita/src/LanguageServer/configurations.i18n.json @@ -14,6 +14,7 @@ "cannot.find": "Non è possibile trovare: {0}", "cannot.resolve.compiler.path": "Input non valido. Non è possibile risolvere il percorso del compilatore", "path.is.not.a.file": "Il percorso non è un file: {0}", + "wrapped.with.quotes": "Do not add extra quotes around paths.", "path.is.not.a.directory": "Il percorso non è una directory: {0}", "duplicate.name": "{0} è duplicato. Il nome della configurazione deve essere univoco.", "multiple.paths.not.allowed": "Più percorsi non sono consentiti.", diff --git a/Extension/i18n/ita/ui/settings.html.i18n.json b/Extension/i18n/ita/ui/settings.html.i18n.json index b56f3fb49..fe401fe7a 100644 --- a/Extension/i18n/ita/ui/settings.html.i18n.json +++ b/Extension/i18n/ita/ui/settings.html.i18n.json @@ -67,10 +67,10 @@ "limit.symbols.checkbox": "Quando è impostato su {0} (o selezionato), il parser tag analizzerà solo i file di codice che sono stati inclusi direttamente o indirettamente da un file di origine in {1}. Quando è impostato su {2} (o non è selezionato), il parser tag analizzerà tutti i file di codice trovati nei percorsi specificati nell'elenco di {3}.", "database.filename": "Sfoglia: nome del file di database", "database.filename.description": "Percorso del database dei simboli generato. Indica all'estensione di salvare il database dei simboli del parser di tag in una posizione diversa da quella di archiviazione predefinita dell'area di lavoro. Se viene specificato un percorso relativo, sarà relativo alla posizione di archiviazione predefinita dell'area di lavoro e non alla cartella dell'area di lavoro. È possibile usare la variabile {0} per specificare un percorso relativo alla cartella dell'area di lavoro, ad esempio {1}.", - "recursiveIncludes.reduce": "Recursive includes: reduce", + "recursiveIncludes.reduce": "Inclusioni ricorsive: riduzione", "recursiveIncludes.reduce.description": "Imposta su {0} per ridurre il numero di percorsi di inclusione ricorsivi forniti a IntelliSense, limitandoli solo ai percorsi attualmente referenziati da istruzioni #include. Per determinare quali file sono inclusi, è necessario prima analizzare i file. Imposta su {1} per fornire tutti i percorsi di inclusione ricorsivi a IntelliSense. La riduzione del numero di percorsi di inclusione ricorsivi può migliorare le prestazioni di IntelliSense in caso di un numero molto elevato di percorsi di inclusione ricorsivi. Non ridurre il numero di percorsi di inclusione ricorsivi può migliorare le prestazioni di IntelliSense evitando la necessità di analizzare i file per determinare quali percorsi di inclusione fornire.", "recursiveIncludes.priority": "Inclusioni ricorsive: priorità", "recursiveIncludes.priority.description": "La priorità dei percorsi di inclusione ricorsivi. Se impostato su {0}, i percorsi di inclusione ricorsivi verranno cercati prima dei percorsi di inclusione di sistema. Se impostato su {1}, i percorsi di inclusione ricorsivi verranno cercati dopo i percorsi di inclusione di sistema.", - "recursiveIncludes.order": "Recursive includes: order", + "recursiveIncludes.order": "Inclusioni ricorsive: ordine", "recursiveIncludes.order.description": "L'ordine in cui vengono cercate le sottodirectory nei percorsi di inclusione ricorsivi." } \ No newline at end of file diff --git a/Extension/i18n/jpn/src/LanguageServer/configurations.i18n.json b/Extension/i18n/jpn/src/LanguageServer/configurations.i18n.json index c69388d17..aab707053 100644 --- a/Extension/i18n/jpn/src/LanguageServer/configurations.i18n.json +++ b/Extension/i18n/jpn/src/LanguageServer/configurations.i18n.json @@ -14,6 +14,7 @@ "cannot.find": "{0} が見つかりません。", "cannot.resolve.compiler.path": "無効な入力です。コンパイラ パスを解決できません", "path.is.not.a.file": "パスがファイルではありません: {0}", + "wrapped.with.quotes": "Do not add extra quotes around paths.", "path.is.not.a.directory": "パスがディレクトリではありません: {0}", "duplicate.name": "{0} が重複しています。構成名は一意である必要があります。", "multiple.paths.not.allowed": "複数のパスは使用できません。", diff --git a/Extension/i18n/jpn/ui/settings.html.i18n.json b/Extension/i18n/jpn/ui/settings.html.i18n.json index 329e54c0a..7ba1321b3 100644 --- a/Extension/i18n/jpn/ui/settings.html.i18n.json +++ b/Extension/i18n/jpn/ui/settings.html.i18n.json @@ -67,10 +67,10 @@ "limit.symbols.checkbox": "{0} (またはチェックボックスがオン) の場合、タグ パーサーは、{1} のソース ファイルによって直接的または間接的にインクルードされたコード ファイルのみを解析します。{2} (またはチェック ボックスがオフ) の場合、タグ パーサーは、{3} の一覧に指定されたパスで見つかったすべてのコード ファイルを解析します。", "database.filename": "参照: データベース ファイル名", "database.filename.description": "生成されたシンボル データベースへのパスです。これは、タグ パーサーのシンボル データベースをワークスペースの既定のストレージの場所以外に保存するように拡張機能に指示します。相対パスを指定した場合、ワークスペース フォルダー自体ではなく、ワークスペースの既定のストレージの場所に対する相対パスになります。{0} 変数を使用して、ワークスペース フォルダーに対する相対パスを指定することもできます (例: {1})。", - "recursiveIncludes.reduce": "Recursive includes: reduce", + "recursiveIncludes.reduce": "再帰的インクルード: 縮小", "recursiveIncludes.reduce.description": "{0} に設定すると、IntelliSense に提供される再帰インクルード パスの数は #include ステートメントによって現在参照されているパスのみに減らされます。これには、まずファイルを解析して、どのファイルが含まれているかを判断する必要があります。すべての再帰インクルード パスを IntelliSense に提供するには、{1} に設定します。非常に多数の再帰インクルード パスが関係している場合、再帰インクルード パスの数を減らすと、IntelliSense のパフォーマンスが向上する可能性があります。再帰インクルード パスの数を減らさないことで、どのインクルード パスを提供するかを判断するためのファイル解析が不要になり、IntelliSense のパフォーマンスが向上する場合があります。", "recursiveIncludes.priority": "再帰インクルード: 優先度", "recursiveIncludes.priority.description": "再帰インクルード パスの優先順位。{0} に設定すると、再帰インクルード パスはシステム インクルード パスの前に検索されます。{1} に設定すると、再帰インクルード パスはシステム インクルード パスの後に検索されます。", - "recursiveIncludes.order": "Recursive includes: order", + "recursiveIncludes.order": "再帰的インクルード: 順序", "recursiveIncludes.order.description": "再帰インクルード パスの下のサブディレクトリが検索される順序。" } \ No newline at end of file diff --git a/Extension/i18n/kor/src/LanguageServer/configurations.i18n.json b/Extension/i18n/kor/src/LanguageServer/configurations.i18n.json index 05e0af092..cc41f0652 100644 --- a/Extension/i18n/kor/src/LanguageServer/configurations.i18n.json +++ b/Extension/i18n/kor/src/LanguageServer/configurations.i18n.json @@ -14,6 +14,7 @@ "cannot.find": "찾을 수 없음: {0}", "cannot.resolve.compiler.path": "입력이 잘못되었습니다. 컴파일러 경로를 확인할 수 없습니다.", "path.is.not.a.file": "경로가 파일이 아님: {0}", + "wrapped.with.quotes": "Do not add extra quotes around paths.", "path.is.not.a.directory": "경로가 디렉터리가 아님: {0}", "duplicate.name": "{0}은(는) 중복됩니다. 구성 이름은 고유해야 합니다.", "multiple.paths.not.allowed": "여러 경로는 허용되지 않습니다.", diff --git a/Extension/i18n/kor/src/common.i18n.json b/Extension/i18n/kor/src/common.i18n.json index 353448b62..c96c69354 100644 --- a/Extension/i18n/kor/src/common.i18n.json +++ b/Extension/i18n/kor/src/common.i18n.json @@ -6,7 +6,7 @@ { "failed.to.parse.json": "주석 또는 후행 쉼표로 인해 json 파일을 구문 분석하지 못했습니다.", "extension.not.ready": "C/C++ 확장을 아직 설치하고 있습니다. 자세한 내용은 출력 창을 참조하세요.", - "refer.read.me": "문제 해결 정보를 보려면 {0}을(를) 참조하세요. 문제는 {1}에서 만들 수 있습니다.", + "refer.read.me": "문제 해결 정보를 보려면 {0} 을(를) 참조하세요. 문제는 {1} 에서 만들 수 있습니다.", "process.exited": "프로세스가 {0} 코드로 종료됨", "process.succeeded": "프로세스가 성공적으로 실행되었습니다.", "killing.process": "프로세스 {0} 종료 중", diff --git a/Extension/i18n/kor/src/expand.i18n.json b/Extension/i18n/kor/src/expand.i18n.json index fb52f660c..0950740f3 100644 --- a/Extension/i18n/kor/src/expand.i18n.json +++ b/Extension/i18n/kor/src/expand.i18n.json @@ -5,8 +5,8 @@ // Do not edit this file. It is machine generated. { "max.recursion.reached": "최대 문자열 확장 재귀에 도달했습니다. 순환 참조가 발생할 수 있습니다.", - "invalid.var.reference": "{1} 문자열에 잘못된 변수 참조 {0}이(가) 있습니다.", - "env.var.not.found": "환경 변수 {0}을(를) 찾을 수 없습니다.", + "invalid.var.reference": "{1} 문자열에 잘못된 변수 참조 {0} 이(가) 있습니다.", + "env.var.not.found": "환경 변수 {0} 을(를) 찾을 수 없습니다.", "commands.not.supported": "{0} 문자열에는 명령이 지원되지 않습니다.", "exception.executing.command": "{1} {2} 문자열에 대해 {0} 명령을 실행하는 동안 예외가 발생했습니다." } \ No newline at end of file diff --git a/Extension/i18n/kor/src/main.i18n.json b/Extension/i18n/kor/src/main.i18n.json index c6a8aeb7f..18730c64c 100644 --- a/Extension/i18n/kor/src/main.i18n.json +++ b/Extension/i18n/kor/src/main.i18n.json @@ -4,7 +4,7 @@ *--------------------------------------------------------------------------------------------*/ // Do not edit this file. It is machine generated. { - "macos.version.deprecated": "{0}보다 최신 버전의 C/C++ 확장에는 macOS 버전 {1} 이상이 필요합니다.", + "macos.version.deprecated": "{0} 보다 최신 버전의 C/C++ 확장에는 macOS 버전 {1} 이상이 필요합니다.", "intellisense.disabled": "IntelliSenseEngine이 비활성화되었습니다.", "more.info.button": "더 많은 정보", "ignore.button": "무시", diff --git a/Extension/i18n/kor/src/nativeStrings.i18n.json b/Extension/i18n/kor/src/nativeStrings.i18n.json index ae6d678c2..8eecc2a90 100644 --- a/Extension/i18n/kor/src/nativeStrings.i18n.json +++ b/Extension/i18n/kor/src/nativeStrings.i18n.json @@ -25,8 +25,8 @@ "request_wait_error": "요청을 기다리는 동안 예기치 않은 오류 발생: {0}", "errored_with": "다음으로 인해 {0} 오류 발생: {1}", "file_open_failed": "{0} 파일을 열지 못했습니다.", - "default_query_failed": "{0}의 기본 포함 경로 및 정의를 쿼리하지 못했습니다.", - "failed_call": "{0}을(를) 호출하지 못했습니다.", + "default_query_failed": "{0} 의 기본 포함 경로 및 정의를 쿼리하지 못했습니다.", + "failed_call": "{0} 을(를) 호출하지 못했습니다.", "quick_info_failed": "요약 정보 작업 실패: {0}", "create_intellisense_client_failed": "IntelliSense 클라이언트를 만들지 못함: {0}", "intellisense_spawn_failed": "IntelliSense 프로세스를 생성하지 못했음: {0}", @@ -38,14 +38,14 @@ "reset_timestamp_failed": "중단하는 동안 타임스탬프를 다시 설정하지 못했습니다. 오류 = {0}: {1}", "update_timestamp_failed": "타임스탬프를 업데이트할 수 없습니다. 오류 = {0}: {1}", "finalize_updates_failed": "파일 업데이트를 완료할 수 없습니다. 오류 = {0}: {1}", - "not_directory_with_mode": "{0}은(는) 디렉터리가 아닙니다(st_mode={1}).", - "retrieve_fs_info_failed": "{0}의 파일 시스템 정보를 검색할 수 없습니다. 오류 = {1}", - "not_directory": "{0}은(는) 디렉터리가 아닙니다.", + "not_directory_with_mode": "{0} 은(는) 디렉터리가 아닙니다(st_mode={1}).", + "retrieve_fs_info_failed": "{0} 의 파일 시스템 정보를 검색할 수 없습니다. 오류 = {1}", + "not_directory": "{0} 은(는) 디렉터리가 아닙니다.", "file_discovery_aborted": "파일 검색이 중단되었습니다.", "aborting_tag_parse": "{0} 및 종속성의 태그 구문 분석을 중단하는 중", "aborting_tag_parse_at_root": "루트에서 태그 구문 분석을 중단합니다.", "unable_to_retrieve_to_reset_timestamps": "타임스탬프를 다시 설정할 DB 레코드를 검색할 수 없습니다. 오류 = {0}", - "failed_to_reset_timestamps_for": "{0}에 대한 타임스탬프를 다시 설정하지 못했습니다. 오류 = {1}", + "failed_to_reset_timestamps_for": "{0} 에 대한 타임스탬프를 다시 설정하지 못했습니다. 오류 = {1}", "no_suitable_complier": "적합한 컴파일러를 찾을 수 없습니다. c_cpp_properties.json에서 \"compilerPath\"를 설정하세요.", "compiler_include_not_found": "컴파일러 포함 경로를 찾을 수 없음: {0}", "intellisense_not_responding": "IntelliSense 엔진이 응답하지 않습니다. 태그 파서를 대신 사용합니다.", @@ -55,13 +55,13 @@ "processing_folder_recursive": "폴더를 처리하는 중(재귀적): {0}", "file_exclude": "파일 제외: {0}", "search_exclude": "검색 제외: {0}", - "discovery_files_processed": "파일 검색 중: {0}개 파일 처리됨", + "discovery_files_processed": "파일 검색 중: {0} 개 파일 처리됨", "files_removed_from_database": "{0} 파일이 데이터베이스에서 제거되었습니다.", - "parsing_files_processed": "구문 분석하는 중: {0}개 파일이 처리됨", + "parsing_files_processed": "구문 분석 중: {0} 개 파일 처리됨", "shutting_down_intellisense": "IntelliSense 서버를 종료하는 중: {0}", "resetting_intellisense": "IntelliSense 서버를 다시 설정하는 중: {0}", "code_browsing_initialized": "코드 검색 서비스가 초기화되었습니다.", - "folder_will_be_indexed": "폴더: {0}이(가) 인덱싱됩니다.", + "folder_will_be_indexed": "폴더: {0} 이(가) 인덱싱됩니다.", "populate_include_completion_cache": "포함 완료 캐시를 채웁니다.", "discovering_files": "파일을 검색하는 중...", "done_discovering_files": "파일 검색을 완료했습니다.", @@ -85,13 +85,13 @@ "replaced_placeholder_file_record": "바뀐 자리 표시자 파일 레코드", "tag_parsing_file": "태그 구문 분석 파일: {0}", "tag_parsing_error": "태그 구문 분석 오류(기호를 찾을 수 없는 경우 무시할 수 있음):", - "reset_timestamp_for": "{0}에 대한 타임스탬프 다시 설정", + "reset_timestamp_for": "{0} 에 대한 타임스탬프 다시 설정", "remove_file_failed": "파일을 제거하지 못했음: {0}", "regex_parse_error": "Regex 구문 분석 오류 - vscode 패턴: {0}, regex: {1}, 오류 메시지: {2}", "terminating_child_process": "자식 프로세스를 종료하는 중: {0}", "still_alive_killing": "계속 활성화되어 있습니다. 종료하는 중...", "giving_up": "포기", - "not_exited_yet": "아직 종료되지 않았습니다. {0}밀리초 동안 일시 중지된 후 다시 시도합니다.", + "not_exited_yet": "아직 종료되지 않았습니다. {0} 밀리초 동안 일시 중지된 후 다시 시도합니다.", "failed_to_spawn_process": "프로세스를 생성하지 못했습니다. 오류: {0}({1})", "offering_completion": "완료 제공 중", "compiler_on_machine": "머신에 있는 컴파일러(경로: '{0}')에서 기본값을 가져오는 중입니다.", @@ -100,7 +100,7 @@ "intellisense_client_not_available_quick_info": "IntelliSense 클라이언트를 사용할 수 없습니다. 요약 정보에 태그 파서를 사용합니다.", "tag_parser_quick_info": "요약 정보에 태그 파서를 사용하는 중", "closing_communication_channel": "통신 채널을 닫는 중입니다.", - "sending_compilation_args": "{0}에 대한 컴파일 인수를 보내는 중", + "sending_compilation_args": "{0} 에 대한 컴파일 인수를 보내는 중", "include_label": "포함: {0}", "framework_label": "프레임워크: {0}", "define_label": "정의: {0}", @@ -138,7 +138,7 @@ "could_not_communicate_with_child_process": "자식 프로세스와 통신할 수 없습니다.", "arg_failed": "{0} 실패", "failed_to_set_flag": "{0} 플래그를 설정하지 못했습니다.", - "unable_to_create": "{0}을(를) 만들 수 없습니다.", + "unable_to_create": "{0} 을(를) 만들 수 없습니다.", "failed_to_set_stdout_flag": "stdin {0} 플래그를 설정하지 못했습니다.", "failed_to_set_stdin_flag": "stdout {0} 플래그를 설정하지 못했습니다.", "failed_to_set_stderr_flag": "stderr {0} 플래그를 설정하지 못했습니다.", @@ -147,10 +147,10 @@ "process_failed_to_run": "프로세스를 실행하지 못했습니다.", "compiler_in_compilerpath_not_found": "지정한 컴파일러를 찾을 수 없음: {0}", "config_data_invalid": "구성 데이터가 잘못됨, {0}", - "cmake_executable_not_found": "{0}에서 CMake 실행 파일을 찾을 수 없음", + "cmake_executable_not_found": "{0} 에서 CMake 실행 파일을 찾을 수 없음", "no_args_provider": "인수 공급자가 없음", "invalid_file_path": "잘못된 파일 경로 {0}", - "cant_create_intellisense_client_for": "{0}에 대한 IntelliSense 클라이언트를 만들 수 없음", + "cant_create_intellisense_client_for": "{0} 에 대한 IntelliSense 클라이언트를 만들 수 없음", "suffix_declaration": "선언", "suffix_type_alias": "형식 별칭", "fallback_to_32_bit_mode": "컴파일러가 64비트를 지원하지 않습니다. 32비트 intelliSenseMode로 대체하는 중입니다.", @@ -245,11 +245,11 @@ "multiple_locations_note": "여러 위치", "folder_tag": "폴더", "file_tag": "파일", - "compiler_default_language_standard_version_old": "컴파일러가 기본 언어 표준 버전 {0}을(를) 반환했습니다. 이 버전은 이전 버전이므로 새 버전 {1}을(를) 기본으로 사용하려고 합니다.", + "compiler_default_language_standard_version_old": "컴파일러가 기본 언어 표준 버전 {0} 을(를) 반환했습니다. 이 버전은 이전 버전이므로 새 버전 {1} 을(를) 기본으로 사용하려고 합니다.", "unexpected_output_from_clang_tidy": "clang-tidy에서 예기치 않은 출력: {0}. 예상: {1}.", "generate_doxygen_comment": "Doxygen 주석 생성", - "offer_create_declaration": "{1}에서 ‘{0}’의 선언 만들기", - "offer_create_definition": "{1}에서 ‘{0}’의 정의 만들기", + "offer_create_declaration": "{1} 에서 ‘{0}’의 선언 만들기", + "offer_create_definition": "{1} 에서 ‘{0}’의 정의 만들기", "function_definition_not_found": "'{0}'에 대한 함수 정의를 찾을 수 없습니다.", "cm_attributes": "특성", "cm_bases": "Bases", diff --git a/Extension/i18n/kor/src/platform.i18n.json b/Extension/i18n/kor/src/platform.i18n.json index 2bd9fa87a..f671df6ba 100644 --- a/Extension/i18n/kor/src/platform.i18n.json +++ b/Extension/i18n/kor/src/platform.i18n.json @@ -6,5 +6,5 @@ { "unknown.os.platform": "알 수 없는 OS 플랫폼", "missing.plist.productversion": "SystemVersion.plist에서 ProduceVersion을 가져올 수 없음", - "missing.darwin.systemversion.file": "{0}에서 SystemVersion.plist를 찾지 못했습니다." + "missing.darwin.systemversion.file": "{0} 에서 SystemVersion.plist를 찾지 못했습니다." } \ No newline at end of file diff --git a/Extension/i18n/kor/ui/settings.html.i18n.json b/Extension/i18n/kor/ui/settings.html.i18n.json index 76a69e7d8..6ac5401dd 100644 --- a/Extension/i18n/kor/ui/settings.html.i18n.json +++ b/Extension/i18n/kor/ui/settings.html.i18n.json @@ -17,7 +17,7 @@ "intellisense.configurations": "IntelliSense 구성", "intellisense.configurations.description": "이 편집기를 사용하여 기본 {0} 파일에 정의된 IntelliSense 설정을 편집합니다. 이 편집기에서 변경한 내용은 선택한 구성에만 적용됩니다. 한 번에 여러 구성을 편집하려면 {1}(으)로 이동합니다.", "configuration.name": "구성 이름", - "configuration.name.description": "구성을 식별하는 이름입니다. {0}, {1} 및 {2}은(는) 해당 플랫폼에서 자동으로 선택되는 구성의 특수 식별자입니다.", + "configuration.name.description": "구성을 식별하는 이름입니다. {0}, {1} 및 {2} 은(는) 해당 플랫폼에서 자동으로 선택되는 구성의 특수 식별자입니다.", "select.configuration.to.edit": "편집할 구성 세트를 선택합니다.", "add.configuration.button": "구성 추가", "configuration.name.input": "구성 이름...", @@ -28,15 +28,15 @@ "specify.a.compiler": "컴파일러 경로를 지정하거나 드롭다운 목록에서 검색된 컴파일러 경로를 선택합니다.", "no.compiler.paths.detected": "(검색된 컴파일러 경로가 없음)", "compiler.args": "컴파일러 인수", - "compiler.arguments": "사용된 포함 또는 정의를 수정하기 위한 컴파일러 인수입니다(예: {0}, {1} 등). 공백으로 구분된 추가 인수를 사용하는 인수는 배열에 별도의 인수로 입력해야 합니다(예: {2}의 경우 {3}을(를) 사용하세요).", + "compiler.arguments": "사용된 포함 또는 정의를 수정하기 위한 컴파일러 인수입니다(예: {0}, {1} 등). 공백으로 구분된 추가 인수를 사용하는 인수는 배열에 별도의 인수로 입력해야 합니다(예: {2} 의 경우 {3} 을(를) 사용하세요).", "one.argument.per.line": "줄당 하나의 인수입니다.", "intellisense.mode": "IntelliSense 모드", "intellisense.mode.description": "MSVC, gcc 또는 Clang의 플랫폼 및 아키텍처 변형에 매핑되는 사용할 IntelliSense 모드입니다. 설정되지 않거나 {0}(으)로 설정된 경우 확장에서 해당 플랫폼의 기본값을 선택합니다. Windows의 경우 기본값인 {1}(으)로 설정되고, Linux의 경우 기본값인 {2}(으)로 설정되며, macOS의 경우 기본값인 {3}(으)로 설정됩니다. {4} 모드를 재정의하려면 특정 IntelliSense 모드를 선택합니다. {5} 변형(예: {6})만 지정하는 IntelliSense 모드는 레거시 모드이며 호스트 플랫폼에 따라 {7} 변형으로 자동으로 변환됩니다.", "include.path": "경로 포함", - "include.path.description": "포함 경로는 소스 파일에 포함된 헤더 파일(예: {0})을 포함하는 폴더입니다. 포함된 헤더 파일을 검색하는 동안 사용할 IntelliSense 엔진의 경로 목록을 지정합니다. 이러한 경로 검색은 비재귀적입니다. 재귀적 검색을 나타내려면 {1}을(를) 지정합니다. 예를 들어 {2}은(는) 모든 하위 디렉터리를 검색하지만 {3}은(는) 그러지 않습니다. Visual Studio가 설치된 Windows를 사용하거나 {4} 설정에 컴파일러가 지정된 경우 이 목록에 시스템 포함 경로를 나열할 필요가 없습니다.", + "include.path.description": "포함 경로는 소스 파일에 포함된 헤더 파일(예: {0})을 포함하는 폴더입니다. 포함된 헤더 파일을 검색하는 동안 사용할 IntelliSense 엔진의 경로 목록을 지정합니다. 이러한 경로 검색은 비재귀적입니다. 재귀적 검색을 나타내려면 {1} 을(를) 지정합니다. 예를 들어 {2} 은(는) 모든 하위 디렉터리를 검색하지만 {3} 은(는) 그러지 않습니다. Visual Studio가 설치된 Windows를 사용하거나 {4} 설정에 컴파일러가 지정된 경우 이 목록에 시스템 포함 경로를 나열할 필요가 없습니다.", "one.include.path.per.line": "줄당 하나의 포함 경로입니다.", "defines": "정의", - "defines.description": "파일을 구문 분석하는 동안 사용할 IntelliSense 엔진의 전처리기 정의 목록입니다. 필요에 따라 {0}을(를) 사용하여 값(예: {1})을 설정할 수 있습니다.", + "defines.description": "파일을 구문 분석하는 동안 사용할 IntelliSense 엔진의 전처리기 정의 목록입니다. 필요에 따라 {0} 을(를) 사용하여 값(예: {1})을 설정할 수 있습니다.", "one.definition.per.line": "줄당 하나의 정의입니다.", "c.standard": "C 표준", "c.standard.description": "IntelliSense에 사용할 C 언어 표준의 버전입니다. 참고: GNU 표준은 GNU 정의를 가져오기 위해 설정된 컴파일러를 쿼리하는 데만 사용되며, IntelliSense는 해당 C 표준 버전을 에뮬레이트합니다.", @@ -44,7 +44,7 @@ "cpp.standard.description": "IntelliSense에 사용할 C++ 언어 표준의 버전입니다. 참고: GNU 표준은 GNU 정의를 가져오기 위해 설정된 컴파일러를 쿼리하는 데만 사용되며, IntelliSense는 해당 C++ 표준 버전을 에뮬레이트합니다.", "advanced.settings": "고급 설정", "configuration.provider": "구성 공급자", - "configuration.provider.description": "소스 파일에 대한 IntelliSense 구성 정보를 제공할 수 있는 VS Code 확장의 ID입니다. 예를 들어 VS Code 확장 ID {0}을(를) 사용하여 CMake 도구 확장의 구성 정보를 제공합니다.", + "configuration.provider.description": "소스 파일에 대한 IntelliSense 구성 정보를 제공할 수 있는 VS Code 확장의 ID입니다. 예를 들어 VS Code 확장 ID {0} 을(를) 사용하여 CMake 도구 확장의 구성 정보를 제공합니다.", "windows.sdk.version": "Windows SDK 버전", "windows.sdk.version.description": "Windows에서 사용할 Windows SDK 포함 경로의 버전입니다(예: {0}).", "mac.framework.path": "Mac 프레임워크 경로", @@ -61,16 +61,16 @@ "merge.configurations": "구성 병합", "merge.configurations.description": "{0}(또는 선택)인 경우, 포함 경로, 정의 및 강제 포함을 구성 제공자의 경로와 병합합니다.", "browse.path": "찾아보기: 경로", - "browse.path.description": "태그 파서가 소스 파일에 포함된 헤더를 검색할 경로의 목록입니다. 생략된 경우 {0}이(가) {1}(으)로 사용됩니다. 기본적으로 이 경로 검색은 재귀적입니다. 비재귀적 검색을 나타내려면 {2}을(를) 지정합니다. 예: {3}은(는) 모든 하위 디렉터리를 검색하지만 {4}은(는) 하위 디렉터리를 검색하지 않습니다.", + "browse.path.description": "태그 파서가 소스 파일에 포함된 헤더를 검색할 경로의 목록입니다. 생략된 경우 {0} 이(가) {1} (으)로 사용됩니다. 기본적으로 이 경로 검색은 재귀적입니다. 비재귀적 검색을 나타내려면 {2} 을(를) 지정합니다. 예: {3} 은(는) 모든 하위 디렉터리를 검색하지만 {4} 은(는) 하위 디렉터리를 검색하지 않습니다.", "one.browse.path.per.line": "줄당 하나의 검색 경로입니다.", "limit.symbols": "찾아보기: 포함된 헤더로 기호 제한", - "limit.symbols.checkbox": "{0}(또는 선택)인 경우 태그 파서는 {1}의 원본 파일에 직접 또는 간접적으로 포함된 코드 파일만 구문 분석합니다. {2}인 경우(또는 선택하지 않은 경우) 태그 파서는 {3} 목록에 지정된 경로에 있는 모든 코드 파일을 구문 분석합니다.", + "limit.symbols.checkbox": "{0}(또는 선택)인 경우 태그 파서는 {1} 의 원본 파일에 직접 또는 간접적으로 포함된 코드 파일만 구문 분석합니다. {2} 인 경우(또는 선택하지 않은 경우) 태그 파서는 {3} 목록에 지정된 경로에 있는 모든 코드 파일을 구문 분석합니다.", "database.filename": "찾아보기: 데이터베이스 파일 이름", "database.filename.description": "생성된 기호 데이터베이스의 경로입니다. 이 경로는 태그 파서의 기호 데이터베이스를 작업 영역의 기본 스토리지 위치가 아닌 다른 곳에 저장하도록 확장에 지시합니다. 상대 경로가 지정된 경우 작업 영역 폴더 자체가 아니라 작업 영역의 기본 스토리지 위치에 대해 상대적으로 만들어집니다. {0} 변수를 사용하여 작업 영역 폴더에 상대적인 경로를 지정할 수 있습니다(예: {1}).", - "recursiveIncludes.reduce": "Recursive includes: reduce", + "recursiveIncludes.reduce": "재귀 포함: 축소", "recursiveIncludes.reduce.description": "IntelliSense에 제공된 재귀 포함 경로의 수를 현재 #include 문에서 참조하는 경로로만 줄이려면 {0}(으)로 설정합니다. 이를 위해서는 포함된 파일을 확인하기 위해 먼저 파일을 구문 분석해야 합니다. IntelliSense에 대한 모든 재귀 포함 경로를 제공하려면 {1}(으)로 설정합니다. 재귀 포함 경로의 수를 줄이면 매우 많은 수의 재귀 포함 경로가 관련된 경우 IntelliSense 성능이 향상될 수 있습니다. 재귀 포함 경로의 수를 줄이지 않으면 제공할 포함 경로를 확인하기 위해 파일을 구문 분석할 필요가 없으므로 IntelliSense 성능을 향상시킬 수 있습니다.", "recursiveIncludes.priority": "재귀 포함: 우선 순위", "recursiveIncludes.priority.description": "재귀 포함 경로의 우선 순위입니다. {0}(으)로 설정하면 재귀 포함 경로가 시스템 포함 경로 전에 검색됩니다. {1}(으)로 설정하면 시스템 포함 경로 후에 재귀 포함 경로가 검색됩니다.", - "recursiveIncludes.order": "Recursive includes: order", + "recursiveIncludes.order": "재귀 포함: 주문", "recursiveIncludes.order.description": "재귀 포함 경로 아래의 하위 디렉터리가 검색되는 순서입니다." } \ No newline at end of file diff --git a/Extension/i18n/plk/src/LanguageServer/configurations.i18n.json b/Extension/i18n/plk/src/LanguageServer/configurations.i18n.json index b092b44ba..14f2b9d9d 100644 --- a/Extension/i18n/plk/src/LanguageServer/configurations.i18n.json +++ b/Extension/i18n/plk/src/LanguageServer/configurations.i18n.json @@ -14,6 +14,7 @@ "cannot.find": "Nie można znaleźć: {0}", "cannot.resolve.compiler.path": "Nieprawidłowe dane wejściowe, nie można rozpoznać ścieżki kompilatora", "path.is.not.a.file": "Ścieżka nie jest plikiem: {0}", + "wrapped.with.quotes": "Do not add extra quotes around paths.", "path.is.not.a.directory": "Ścieżka nie jest katalogiem: {0}", "duplicate.name": "Element {0} jest duplikatem. Nazwa konfiguracji musi być unikatowa.", "multiple.paths.not.allowed": "Wiele ścieżek jest niedozwolonych.", diff --git a/Extension/i18n/plk/ui/settings.html.i18n.json b/Extension/i18n/plk/ui/settings.html.i18n.json index 050787215..dff332d05 100644 --- a/Extension/i18n/plk/ui/settings.html.i18n.json +++ b/Extension/i18n/plk/ui/settings.html.i18n.json @@ -67,10 +67,10 @@ "limit.symbols.checkbox": "Jeśli wartość jest równa {0} (lub jest zaznaczona), analizator tagów analizuje tylko pliki kodu, które zostały bezpośrednio lub pośrednio dołączone przez plik źródłowy w {1}. Jeśli wartość jest równa {2} (lub nie jest zaznaczona), analizator tagów będzie analizować wszystkie pliki kodu znalezione w ścieżkach określonych na {3} liście.", "database.filename": "Przeglądaj: nazwa pliku bazy danych", "database.filename.description": "Ścieżka do generowanej bazy danych symboli. Określa ona, że rozszerzenie ma zapisać bazę danych symboli analizatora tagów w innym miejscu niż domyślna lokalizacja magazynowania obszaru roboczego. Jeśli zostanie określona ścieżka względna, będzie to ścieżka względem domyślnej lokalizacji magazynowania obszaru roboczego, a nie folderu obszaru roboczego. Można użyć zmiennej {0} do określenia ścieżki względem folderu obszaru roboczego (np. {1}).", - "recursiveIncludes.reduce": "Recursive includes: reduce", + "recursiveIncludes.reduce": "Rekursywne obejmuje: redukcję", "recursiveIncludes.reduce.description": "Ustaw na wartość {0}, aby zmniejszyć liczbę ścieżek rekursywnego dołączania dostarczanych do funkcji IntelliSense tylko do tych ścieżek, do których obecnie odwołują się instrukcje #include. Wymaga to najpierw przeanalizowania plików w celu określenia, które pliki są dołączane. Ustaw na wartość{1}, aby dostarczać wszystkie ścieżki rekursywnego dołączania do funkcji IntelliSense. Zmniejszenie liczby ścieżek rekursywnego dołączania może zwiększyć wydajność funkcji IntelliSense w przypadku dużej liczby ścieżek rekursywnego dołączania. Brak zmniejszenia liczby ścieżek rekursywnego dołączania może zwiększyć wydajność funkcji IntelliSense, unikając konieczności analizowania plików w celu określenia, które ścieżki dołączane należy podać.", "recursiveIncludes.priority": "Rekursywne dołączania: priorytet", "recursiveIncludes.priority.description": "Priorytet ścieżek rekursywnego dołączania. Jeśli ustawiono na wartość {0}, ścieżki rekursywnego dołączania będą przeszukiwane przed ścieżkami systemowego dołączania. Jeśli ustawiono na wartość {1}, ścieżki rekursywnego dołączania będą przeszukiwane po ścieżkach systemowego dołączania.", - "recursiveIncludes.order": "Recursive includes: order", + "recursiveIncludes.order": "Rekursywne obejmuje: kolejność", "recursiveIncludes.order.description": "Kolejność przeszukiwania podkatalogów w ścieżkach dołączania rekursywnego." } \ No newline at end of file diff --git a/Extension/i18n/ptb/src/LanguageServer/configurations.i18n.json b/Extension/i18n/ptb/src/LanguageServer/configurations.i18n.json index b0beff6ba..856135f5f 100644 --- a/Extension/i18n/ptb/src/LanguageServer/configurations.i18n.json +++ b/Extension/i18n/ptb/src/LanguageServer/configurations.i18n.json @@ -14,6 +14,7 @@ "cannot.find": "Não é possível localizar: {0}", "cannot.resolve.compiler.path": "Entrada inválida. Não é possível resolver o caminho do compilador", "path.is.not.a.file": "O caminho não é um arquivo: {0}", + "wrapped.with.quotes": "Do not add extra quotes around paths.", "path.is.not.a.directory": "O caminho não é um diretório: {0}", "duplicate.name": "{0} é uma duplicata. O nome da configuração deve ser exclusivo.", "multiple.paths.not.allowed": "Vários caminhos não são permitidos.", diff --git a/Extension/i18n/ptb/ui/settings.html.i18n.json b/Extension/i18n/ptb/ui/settings.html.i18n.json index d052b8462..68232441f 100644 --- a/Extension/i18n/ptb/ui/settings.html.i18n.json +++ b/Extension/i18n/ptb/ui/settings.html.i18n.json @@ -67,10 +67,10 @@ "limit.symbols.checkbox": "Quando {0} (ou marcado), o Analisador de Marca analisará somente os arquivos de código que foram diretamente ou indiretamente incluídos em um arquivo de origem no {1}. Quando {2} (ou não marcado), o Analisador de Marca analisará todos os arquivos de código encontrados nos caminhos especificados na lista de {3}.", "database.filename": "Procurar: nome do arquivo do banco de dados", "database.filename.description": "O caminho para o banco de dados de símbolo gerado. Isso instrui a extensão a salvar o banco de dados de símbolos do Analisador de Marca em algum lugar diferente do local de armazenamento padrão do workspace. Se um caminho relativo for especificado, ele será feito em relação ao local de armazenamento padrão do workspace, não à própria pasta do workspace. A {0} variável pode ser usada para especificar um caminho relativo à pasta do workspace (por exemplo, {1}).", - "recursiveIncludes.reduce": "Recursive includes: reduce", + "recursiveIncludes.reduce": "Inclusões recursivas: reduzir", "recursiveIncludes.reduce.description": "Defina como {0} para reduzir o número de caminhos de inclusão recursivos fornecidos ao IntelliSense apenas para os caminhos atualmente referenciados por instruções #include. Isso requer primeiro a análise de arquivos para determinar quais arquivos estão incluídos. Defina como {1} para fornecer todos os caminhos de inclusão recursivos para o IntelliSense. Reduzir o número de caminhos de inclusão recursivos pode melhorar o desempenho do IntelliSense quando um número muito grande de caminhos de inclusão recursivos está envolvido. Não reduzir o número de caminhos de inclusão recursivos pode melhorar o desempenho do IntelliSense, evitando a necessidade de analisar arquivos para determinar quais caminhos de inclusão fornecer.", "recursiveIncludes.priority": "Inclui recursiva: prioridade", "recursiveIncludes.priority.description": "A prioridade dos caminhos de inclusão recursivo. Se definido como {0}, os caminhos de inclusão recursivos serão pesquisados antes que o sistema inclua caminhos. Se definido como {1}, os caminhos de inclusão recursivos serão pesquisados depois que o sistema incluir caminhos.", - "recursiveIncludes.order": "Recursive includes: order", + "recursiveIncludes.order": "Inclusões recursivas: pedido", "recursiveIncludes.order.description": "A ordem na qual os subdiretórios em caminhos de inclusão recursivos são pesquisados." } \ No newline at end of file diff --git a/Extension/i18n/rus/src/LanguageServer/configurations.i18n.json b/Extension/i18n/rus/src/LanguageServer/configurations.i18n.json index d33ef90cd..758c606bc 100644 --- a/Extension/i18n/rus/src/LanguageServer/configurations.i18n.json +++ b/Extension/i18n/rus/src/LanguageServer/configurations.i18n.json @@ -14,6 +14,7 @@ "cannot.find": "Не удается найти: {0}", "cannot.resolve.compiler.path": "Недопустимые входные данные; не удается разрешить путь компилятора", "path.is.not.a.file": "Путь не является файлом: {0}", + "wrapped.with.quotes": "Do not add extra quotes around paths.", "path.is.not.a.directory": "Путь не является каталогом: {0}", "duplicate.name": "{0} является дубликатом. Имя конфигурации должно быть уникальным.", "multiple.paths.not.allowed": "Запрещено использовать несколько путей.", diff --git a/Extension/i18n/rus/ui/settings.html.i18n.json b/Extension/i18n/rus/ui/settings.html.i18n.json index ec6729288..cf0bf8dbb 100644 --- a/Extension/i18n/rus/ui/settings.html.i18n.json +++ b/Extension/i18n/rus/ui/settings.html.i18n.json @@ -67,10 +67,10 @@ "limit.symbols.checkbox": "При значении {0} (или если установлен флажок) анализатор тегов будет анализировать только файлы кода, прямо или косвенно включаемые исходным файлом в {1}. При значении {2} (или если флажок не установлен) анализатор тегов будет анализировать все файлы кода, найденные по путям, указанным в списке {3}.", "database.filename": "Обзор: имя файла базы данных", "database.filename.description": "Путь к создаваемой базе данных символов. Этот параметр указывает расширению расположение для сохранение базы данных символов анализатора тегов, отличное от используемого в этой рабочей области места хранения по умолчанию.Если указать относительный путь, он будет определяться относительно места хранения по умолчанию, а не от папки самой рабочей области. Чтобы указать путь относительно папки рабочей области, можно использовать переменную {0} (например, {1}).", - "recursiveIncludes.reduce": "Recursive includes: reduce", + "recursiveIncludes.reduce": "Рекурсивные включения: уменьшение", "recursiveIncludes.reduce.description": "Задайте значение {0}, чтобы всегда уменьшать количество путей рекурсивного включения, предоставляемых для IntelliSense, только до тех путей, на которые в настоящее время ссылаются инструкции #include. Для этого необходимо сначала проанализировать файлы, чтобы определить, какие файлы включены. Задайте значение {1}, чтобы предоставить все пути рекурсивного включения для IntelliSense. Уменьшение количества путей рекурсивного включения может повысить производительность IntelliSense, если задействовано очень большое количество путей рекурсивного включения. Отсутствие уменьшения количества путей рекурсивного включения может улучшить производительность IntelliSense благодаря отказу от необходимости анализа файлов для определения того, какие пути включения следует предоставить.", "recursiveIncludes.priority": "Рекурсивные включения: приоритет", "recursiveIncludes.priority.description": "Приоритет путей рекурсивного включения. Если задано значение {0}, поиск путей рекурсивного включения будет выполняться до путей системного включения. Если задано значение {1}, поиск путей рекурсивного включения будет выполняться после путей системного включения.", - "recursiveIncludes.order": "Recursive includes: order", + "recursiveIncludes.order": "Рекурсивные включения: порядок", "recursiveIncludes.order.description": "Порядок поиска подкаталогов в путях рекурсивного включения." } \ No newline at end of file diff --git a/Extension/i18n/trk/package.i18n.json b/Extension/i18n/trk/package.i18n.json index e4d7f638e..d36424816 100644 --- a/Extension/i18n/trk/package.i18n.json +++ b/Extension/i18n/trk/package.i18n.json @@ -430,7 +430,7 @@ "c_cpp.walkthrough.create.cpp.file.description": "Bir C++ dosyasını [açın](command:toSide:workbench.action.files.openFile) veya C++ dosyası [oluşturun](command:toSide:workbench.action.files.newUntitledFile?%7B%22languageId%22%3A%22cpp%22%7D). Dosyayı \".cpp\" uzantısıyla (ör. \"helloworld.cpp\".) kaydetmeyi unutmayın.\n[C++ dosyası oluşturun](command:toSide:workbench.action.files.newUntitledFile?%7B%22languageId%22%3A%22cpp%22%7D)", "c_cpp.walkthrough.create.cpp.file.altText": "Bir C++ dosyası veya bir klasörü C++ projesiyle açın.", "c_cpp.walkthrough.command.prompt.title": "VS için Developer Command Prompt'tan başlat", - "c_cpp.walkthrough.command.prompt.description": "Microsoft Visual Studio C++ derleyicisini kullanırken, C++ uzantısı, VS için Developer Command Prompt'tan VS Code'u başlatmanızı gerektirir. Yeniden başlatmak için sağdaki talimatları izleyin.\n[Yeniden Yükleme Penceresi](komut:workbench.action.reloadWindow)", + "c_cpp.walkthrough.command.prompt.description": "Microsoft Visual Studio C++ derleyicisini kullanırken, C++ uzantısı, VS için Developer Command Prompt'tan VS Code'u başlatmanızı gerektirir. Yeniden başlatmak için sağdaki talimatları izleyin.\n[Yeniden Yükleme Penceresi](command:workbench.action.reloadWindow)", "c_cpp.walkthrough.run.debug.title": "C++ dosyanızı çalıştırın ve hata ayıklayın", "c_cpp.walkthrough.run.debug.mac.description": "C++ dosyanızı açın ve düzenleyicinin sağ üst köşesindeki oynat düğmesine tıklayın veya dosyadayken F5'e basın. Hata ayıklayıcı ile çalıştırmak için \"clang++ - Etkin dosya derle ve hata ayıkla\" seçeneğini seçin.", "c_cpp.walkthrough.run.debug.linux.description": "C++ dosyanızı açın ve düzenleyicinin sağ üst köşesindeki oynat düğmesine tıklayın veya dosyadayken F5'e basın. Hata ayıklayıcı ile çalıştırmak için \"g++ - Aktif dosya derle ve hata ayıkla\"yı seçin.", diff --git a/Extension/i18n/trk/src/LanguageServer/configurations.i18n.json b/Extension/i18n/trk/src/LanguageServer/configurations.i18n.json index a9e5c26f2..1f1a6369b 100644 --- a/Extension/i18n/trk/src/LanguageServer/configurations.i18n.json +++ b/Extension/i18n/trk/src/LanguageServer/configurations.i18n.json @@ -14,6 +14,7 @@ "cannot.find": "{0} bulunamıyor", "cannot.resolve.compiler.path": "Giriş geçersiz, derleyici yolu çözümlenemiyor", "path.is.not.a.file": "Yol bir dosya değil: {0}", + "wrapped.with.quotes": "Do not add extra quotes around paths.", "path.is.not.a.directory": "Yol bir dizin değil: {0}", "duplicate.name": "{0} yineleniyor. Yapılandırma adı benzersiz olmalıdır.", "multiple.paths.not.allowed": "Birden fazla yola izin verilmez.", diff --git a/Extension/i18n/trk/ui/settings.html.i18n.json b/Extension/i18n/trk/ui/settings.html.i18n.json index 8cd6537cf..611ea858d 100644 --- a/Extension/i18n/trk/ui/settings.html.i18n.json +++ b/Extension/i18n/trk/ui/settings.html.i18n.json @@ -67,10 +67,10 @@ "limit.symbols.checkbox": "{0} (veya işaretli) olduğunda, Etiket Ayrıştırıcı yalnızca {1} içindeki bir kaynak dosya tarafından doğrudan veya dolaylı olarak dahil edilen kod dosyalarını ayrıştırır. {2} olduğunda (veya işaretlenmediğinde), Etiket Ayrıştırıcı {3} listesinde belirtilen yollarda bulunan tüm kod dosyalarını ayrıştırır.", "database.filename": "Gözat: veritabanı dosya adı", "database.filename.description": "Oluşturulan sembol veritabanının yolu. Bu, uzantının Etiket Ayrıştırıcısının sembol veritabanının çalışma alanı varsayılan depolama konumundan başka bir yerde kaydedilmesini sağlar. Göreli yol belirtilirse, çalışma alanı klasörünün kendisi değil, çalışma alanının varsayılan depolama konumuyla göreli olarak yapılır. {0} değişkeni, çalışma alanı klasörüne göreli bir yol belirtmek için kullanılabilir (örneğin, {1}).", - "recursiveIncludes.reduce": "Recursive includes: reduce", + "recursiveIncludes.reduce": "Özyinelemeli eklemeler: azalt", "recursiveIncludes.reduce.description": "IntelliSense'e sağlanan özyinelemeli ekleme yollarının sayısını her zaman yalnızca o anda #include deyimleri tarafından başvurulan yollara indirgemek için {0} olarak ayarlayın. Bu, hangi dosyaların eklendiğini belirlemek için önce dosyaların ayrıştırılmasını gerektirir. IntelliSense'e tüm özyinelemeli ekleme yollarını sağlamak için {1} olarak ayarlayın. Özyinelemeli ekleme yollarının sayısının azaltılması, çok sayıda özyinelemeli ekleme yolu söz konusu olduğunda IntelliSense performansını artırabilir. Özyinelemeli ekleme yollarının sayısını azaltmamak, hangi ekleme yollarının sağlanacağını belirlemek için dosyaları ayrıştırma ihtiyacını ortadan kaldırarak IntelliSense performansını artırabilir.", "recursiveIncludes.priority": "Özyinelemeli içerikler: öncelik", "recursiveIncludes.priority.description": "Özyinelemeli ekleme yollarının önceliği. {0} olarak ayarlanırsa özyinelemeli ekleme yolları, sistem ekleme yollarından önce aranır. {1} olarak ayarlanırsa özyinelemeli ekleme yolları, sistem ekleme yollarından sonra aranır.", - "recursiveIncludes.order": "Recursive includes: order", + "recursiveIncludes.order": "Özyinelemeli eklemeler: düzenle", "recursiveIncludes.order.description": "Özyinelemeli ekleme yolları altındaki alt dizinlerin aranma sırası." } \ No newline at end of file From 964bc5b6bdad1e9897d897be325c7b7d6f639b44 Mon Sep 17 00:00:00 2001 From: Sean McManus Date: Mon, 21 Apr 2025 18:56:11 -0700 Subject: [PATCH 11/25] Update version and changelog for 1.25.1. (#13524) * Update version and changelog for 1.25.1. --- Extension/CHANGELOG.md | 13 ++++++++++++- Extension/package.json | 2 +- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/Extension/CHANGELOG.md b/Extension/CHANGELOG.md index df74ab20a..592bd66d5 100644 --- a/Extension/CHANGELOG.md +++ b/Extension/CHANGELOG.md @@ -1,11 +1,22 @@ # C/C++ for Visual Studio Code Changelog +## Version 1.25.1: April 22, 2025 +### Enhancement +* Add a configuration warning message explaining why paths in quotes can't be found. [#11955](https://github.com/microsoft/vscode-cpptools/issues/11955) + +### Bug Fixes +* Fix no error appearing in the configuration UI when an invalid `compilerPath` is used. [#12661](https://github.com/microsoft/vscode-cpptools/issues/12661) +* Fix the 'Debug C/C++ File' button sometimes disappearing. [#13400](https://github.com/microsoft/vscode-cpptools/issues/13400) +* Fix some cases of a tag parser crash with `read_double`. [#13435](https://github.com/Microsoft/vscode-cpptools/issues/13435) +* Fix issues with the `recursiveIncludes` properties in the configuration UI editor. [PR #13498](https://github.com/microsoft/vscode-cpptools/pull/13498) +* Update clang-tidy and clang-format from 20.1.2 to 20.1.3 (which has some bug fixes). +* Fix some translation issues. + ## Version 1.25.0: April 10, 2025 ### Enhancement * Improve the description of the `C_Cpp.copilotHover` setting. [PR #13461](https://github.com/microsoft/vscode-cpptools/pull/13461) ### Bug Fixes -* Fix a crash during tag parsing (in `read_double`). [#13435](https://github.com/Microsoft/vscode-cpptools/issues/13435) * Fix the handling of default file associations for certain file extensions. [PR #13455](https://github.com/microsoft/vscode-cpptools/pull/13455) * Fix shell parsing of the arguments of a full command line in `compilerPath`. [PR #13468](https://github.com/microsoft/vscode-cpptools/pull/13468) * Fix C and CUDA files being interpreted as C++ in `compile_commands.json`. [#13471](https://github.com/microsoft/vscode-cpptools/issues/13471) diff --git a/Extension/package.json b/Extension/package.json index 91d1169e6..2a8ef1a61 100644 --- a/Extension/package.json +++ b/Extension/package.json @@ -2,7 +2,7 @@ "name": "cpptools", "displayName": "C/C++", "description": "C/C++ IntelliSense, debugging, and code browsing.", - "version": "1.25.0-main", + "version": "1.25.1-main", "publisher": "ms-vscode", "icon": "LanguageCCPP_color_128x.png", "readme": "README.md", From 92a34d51b1174f93af2aabe41bd591dbf6586578 Mon Sep 17 00:00:00 2001 From: Luca <681992+lukka@users.noreply.github.com> Date: Tue, 22 Apr 2025 03:00:49 -0700 Subject: [PATCH 12/25] codesnippets v2 changes (#13525) --- Extension/src/LanguageServer/client.ts | 10 +- .../copilotCompletionContextProvider.ts | 156 ++++++++++++++---- .../copilotCompletionContextTelemetry.ts | 11 +- Extension/src/LanguageServer/settings.ts | 4 +- 4 files changed, 137 insertions(+), 44 deletions(-) diff --git a/Extension/src/LanguageServer/client.ts b/Extension/src/LanguageServer/client.ts index 92107158a..44b537d1e 100644 --- a/Extension/src/LanguageServer/client.ts +++ b/Extension/src/LanguageServer/client.ts @@ -585,6 +585,9 @@ export interface CopilotCompletionContextParams { uri: string; caretOffset: number; featureFlag: CopilotCompletionContextFeatures; + maxSnippetCount: number; + maxSnippetLength: number; + doAggregateSnippets: boolean; } // Requests @@ -843,7 +846,7 @@ export interface Client { getIncludes(uri: vscode.Uri, maxDepth: number): Promise; getChatContext(uri: vscode.Uri, token: vscode.CancellationToken): Promise; filesEncodingChanged(filesEncodingChanged: FilesEncodingChanged): void; - getCompletionContext(fileName: vscode.Uri, caretOffset: number, featureFlag: CopilotCompletionContextFeatures, token: vscode.CancellationToken): Promise; + getCompletionContext(fileName: vscode.Uri, caretOffset: number, featureFlag: CopilotCompletionContextFeatures, maxSnippetCount: number, maxSnippetLength: number, doAggregateSnippets: boolean, token: vscode.CancellationToken): Promise; } export function createClient(workspaceFolder?: vscode.WorkspaceFolder): Client { @@ -2352,11 +2355,12 @@ export class DefaultClient implements Client { } public async getCompletionContext(file: vscode.Uri, caretOffset: number, featureFlag: CopilotCompletionContextFeatures, + maxSnippetCount: number, maxSnippetLength: number, doAggregateSnippets: boolean, token: vscode.CancellationToken): Promise { await withCancellation(this.ready, token); return DefaultClient.withLspCancellationHandling( () => this.languageClient.sendRequest(CopilotCompletionContextRequest, - { uri: file.toString(), caretOffset, featureFlag }, token), token); + { uri: file.toString(), caretOffset, featureFlag, maxSnippetCount, maxSnippetLength, doAggregateSnippets }, token), token); } /** @@ -4277,5 +4281,5 @@ class NullClient implements Client { getIncludes(uri: vscode.Uri, maxDepth: number): Promise { return Promise.resolve({} as GetIncludesResult); } getChatContext(uri: vscode.Uri, token: vscode.CancellationToken): Promise { return Promise.resolve({} as ChatContextResult); } filesEncodingChanged(filesEncodingChanged: FilesEncodingChanged): void { } - getCompletionContext(file: vscode.Uri, caretOffset: number, featureFlag: CopilotCompletionContextFeatures, token: vscode.CancellationToken): Promise { return Promise.resolve({} as CopilotCompletionContextResult); } + getCompletionContext(file: vscode.Uri, caretOffset: number, featureFlag: CopilotCompletionContextFeatures, maxSnippetCount: number, maxSnippetLength: number, doAggregateSnippets: boolean, token: vscode.CancellationToken): Promise { return Promise.resolve({} as CopilotCompletionContextResult); } } diff --git a/Extension/src/LanguageServer/copilotCompletionContextProvider.ts b/Extension/src/LanguageServer/copilotCompletionContextProvider.ts index 17ec88028..d255f24a3 100644 --- a/Extension/src/LanguageServer/copilotCompletionContextProvider.ts +++ b/Extension/src/LanguageServer/copilotCompletionContextProvider.ts @@ -6,7 +6,7 @@ import { ContextResolver, ResolveRequest, SupportedContextItem } from '@github/c import { randomUUID } from 'crypto'; import * as vscode from 'vscode'; import { DocumentSelector } from 'vscode-languageserver-protocol'; -import { isNumber, isString } from '../common'; +import { isBoolean, isNumber, isString } from '../common'; import { getOutputChannelLogger, Logger } from '../logger'; import * as telemetry from '../telemetry'; import { CopilotCompletionContextResult } from './client'; @@ -75,11 +75,21 @@ export class CopilotCompletionContextProvider implements ContextResolver = new Map(); private static readonly defaultCppDocumentSelector: DocumentSelector = [{ language: 'cpp' }, { language: 'c' }, { language: 'cuda-cpp' }]; - // A percentage expressed as an integer number, i.e. 50 means 50%. - private static readonly defaultTimeBudgetFactor: number = 50; - private static readonly defaultMaxCaretDistance = 4096; + // The default time budget for providing a value from resolve(). + private static readonly defaultTimeBudgetMs: number = 7; + // Assume the cache is stale when the distance to the current caret is greater than this value. + private static readonly defaultMaxCaretDistance = 8192; + private static readonly defaultMaxSnippetCount = 15; + private static readonly defaultMaxSnippetLength = 10 * 1024; // 10KB + private static readonly defaultDoAggregateSnippets = true; private completionContextCancellation = new vscode.CancellationTokenSource(); private contextProviderDisposable: vscode.Disposable | undefined; + static readonly CppContextProviderEnabledFeatures = 'enabledFeatures'; + static readonly CppContextProviderTimeBudgetMs = 'timeBudgetMs'; + static readonly CppContextProviderMaxSnippetCount = 'maxSnippetCount'; + static readonly CppContextProviderMaxSnippetLength = 'maxSnippetLength'; + static readonly CppContextProviderMaxDistanceToCaret = 'maxDistanceToCaret'; + static readonly CppContextProviderDoAggregateSnippets = 'doAggregateSnippets'; constructor(private readonly logger: Logger) { } @@ -125,7 +135,8 @@ export class CopilotCompletionContextProvider implements ContextResolver { const documentUri = context.documentContext.uri; const caretOffset = context.documentContext.offset; @@ -143,7 +154,7 @@ export class CopilotCompletionContextProvider implements ContextResolver"}:${copilotC telemetry.send("cache"); } } - static readonly CppCodeSnippetsEnabledFeatures = 'CppCodeSnippetsEnabledFeatures'; - static readonly CppCodeSnippetsTimeBudgetFactor = 'CppCodeSnippetsTimeBudgetFactor'; - static readonly CppCodeSnippetsMaxDistanceToCaret = 'CppCodeSnippetsMaxDistanceToCaret'; - private async fetchTimeBudgetFactor(context: ResolveRequest): Promise { + static readonly paramsCache: Record = {}; + static paramsCacheCreated = false; + private getContextProviderParam(paramName: string): T | undefined { try { - const budgetFactor = context.activeExperiments.get(CopilotCompletionContextProvider.CppCodeSnippetsTimeBudgetFactor); - return (isNumber(budgetFactor) ? budgetFactor : CopilotCompletionContextProvider.defaultTimeBudgetFactor) / 100.0; + if (!CopilotCompletionContextProvider.paramsCacheCreated) { + CopilotCompletionContextProvider.paramsCacheCreated = true; + const paramsJson = new CppSettings().cppContextProviderParams; + if (isString(paramsJson)) { + try { + const params = JSON.parse(paramsJson.replaceAll(/'/g, '"')); + for (const key in params) { + CopilotCompletionContextProvider.paramsCache[key] = params[key]; + } + } catch (e) { + console.warn(`getContextProviderParam(): error parsing getContextProviderParam: `, e); + } + } + } + return CopilotCompletionContextProvider.paramsCache[paramName] as T; + } catch (e) { + console.warn(`getContextProviderParam(): error fetching getContextProviderParam: `, e); + return undefined; + } + } + + private async fetchTimeBudgetMs(context: ResolveRequest): Promise { + try { + const timeBudgetMs = this.getContextProviderParam(CopilotCompletionContextProvider.CppContextProviderTimeBudgetMs) ?? + context.activeExperiments.get(CopilotCompletionContextProvider.CppContextProviderTimeBudgetMs); + return isNumber(timeBudgetMs) ? timeBudgetMs : CopilotCompletionContextProvider.defaultTimeBudgetMs; } catch (e) { - console.warn(`fetchTimeBudgetFactor(): error fetching ${CopilotCompletionContextProvider.CppCodeSnippetsTimeBudgetFactor}, using default: `, e); - return CopilotCompletionContextProvider.defaultTimeBudgetFactor; + console.warn(`fetchTimeBudgetMs(): error fetching ${CopilotCompletionContextProvider.CppContextProviderTimeBudgetMs}, using default: `, e); + return CopilotCompletionContextProvider.defaultTimeBudgetMs; } } private async fetchMaxDistanceToCaret(context: ResolveRequest): Promise { try { - const maxDistance = context.activeExperiments.get(CopilotCompletionContextProvider.CppCodeSnippetsMaxDistanceToCaret); + const maxDistance = this.getContextProviderParam(CopilotCompletionContextProvider.CppContextProviderMaxDistanceToCaret) ?? + context.activeExperiments.get(CopilotCompletionContextProvider.CppContextProviderMaxDistanceToCaret); return isNumber(maxDistance) ? maxDistance : CopilotCompletionContextProvider.defaultMaxCaretDistance; } catch (e) { - console.warn(`fetchMaxDistanceToCaret(): error fetching ${CopilotCompletionContextProvider.CppCodeSnippetsMaxDistanceToCaret}, using default: `, e); + console.warn(`fetchMaxDistanceToCaret(): error fetching ${CopilotCompletionContextProvider.CppContextProviderMaxDistanceToCaret}, using default: `, e); return CopilotCompletionContextProvider.defaultMaxCaretDistance; } } + private async fetchMaxSnippetCount(context: ResolveRequest): Promise { + try { + const maxSnippetCount = this.getContextProviderParam(CopilotCompletionContextProvider.CppContextProviderMaxSnippetCount) ?? + context.activeExperiments.get(CopilotCompletionContextProvider.CppContextProviderMaxSnippetCount); + return isNumber(maxSnippetCount) ? maxSnippetCount : CopilotCompletionContextProvider.defaultMaxSnippetCount; + } catch (e) { + console.warn(`fetchMaxSnippetCount(): error fetching ${CopilotCompletionContextProvider.defaultMaxSnippetCount}, using default: `, e); + return CopilotCompletionContextProvider.defaultMaxSnippetCount; + } + } + + private async fetchMaxSnippetLength(context: ResolveRequest): Promise { + try { + const maxSnippetLength = this.getContextProviderParam(CopilotCompletionContextProvider.CppContextProviderMaxSnippetLength) ?? + context.activeExperiments.get(CopilotCompletionContextProvider.CppContextProviderMaxSnippetLength); + return isNumber(maxSnippetLength) ? maxSnippetLength : CopilotCompletionContextProvider.defaultMaxSnippetLength; + } catch (e) { + console.warn(`fetchMaxSnippetLength(): error fetching ${CopilotCompletionContextProvider.defaultMaxSnippetLength}, using default: `, e); + return CopilotCompletionContextProvider.defaultMaxSnippetLength; + } + } + + private async fetchDoAggregateSnippets(context: ResolveRequest): Promise { + try { + const doAggregateSnippets = this.getContextProviderParam(CopilotCompletionContextProvider.CppContextProviderDoAggregateSnippets) ?? + context.activeExperiments.get(CopilotCompletionContextProvider.CppContextProviderDoAggregateSnippets); + return isBoolean(doAggregateSnippets) ? doAggregateSnippets : CopilotCompletionContextProvider.defaultDoAggregateSnippets; + } catch (e) { + console.warn(`fetchDoAggregateSnippets(): error fetching ${CopilotCompletionContextProvider.defaultDoAggregateSnippets}, using default: `, e); + return CopilotCompletionContextProvider.defaultDoAggregateSnippets; + } + } + private async getEnabledFeatureNames(context: ResolveRequest): Promise { try { - const enabledFeatureNames = new CppSettings().cppCodeSnippetsFeatureNames ?? context.activeExperiments.get(CopilotCompletionContextProvider.CppCodeSnippetsEnabledFeatures); + const enabledFeatureNames = this.getContextProviderParam(CopilotCompletionContextProvider.CppContextProviderEnabledFeatures) ?? + context.activeExperiments.get(CopilotCompletionContextProvider.CppContextProviderEnabledFeatures); if (isString(enabledFeatureNames)) { return enabledFeatureNames.split(',').map(s => s.trim()); } } catch (e) { - console.warn(`getEnabledFeatures(): error fetching ${CopilotCompletionContextProvider.CppCodeSnippetsEnabledFeatures}: `, e); + console.warn(`getEnabledFeatureNames(): error fetching ${CopilotCompletionContextProvider.CppContextProviderEnabledFeatures}: `, e); } return undefined; } @@ -251,11 +320,32 @@ response.uri:${copilotCompletionContext.sourceFileUri || ""}:${copilotC this.completionContextCache.delete(fileUri); } + private computeSnippetsResolved: boolean = true; + + private async resolveResultAndKind(context: ResolveRequest, featureFlag: CopilotCompletionContextFeatures, + telemetry: CopilotCompletionContextTelemetry, defaultValue: CopilotCompletionContextResult | undefined, + resolveStartTime: number, timeBudgetMs: number, maxSnippetCount: number, maxSnippetLength: number, doAggregateSnippets: boolean, + copilotCancel: vscode.CancellationToken): Promise<[CopilotCompletionContextResult | undefined, CopilotCompletionKind]> { + if (this.computeSnippetsResolved) { + this.computeSnippetsResolved = false; + const computeSnippetsPromise = this.getCompletionContextWithCancellation(context, featureFlag, + maxSnippetCount, maxSnippetLength, doAggregateSnippets, resolveStartTime, telemetry.fork(), this.completionContextCancellation.token).finally( + () => this.computeSnippetsResolved = true + ); + const res = await this.waitForCompletionWithTimeoutAndCancellation( + computeSnippetsPromise, defaultValue, timeBudgetMs, copilotCancel); + return res; + } else { return [defaultValue, defaultValue ? CopilotCompletionKind.GotFromCache : CopilotCompletionKind.MissingCacheMiss]; } + } + public async resolve(context: ResolveRequest, copilotCancel: vscode.CancellationToken): Promise { const resolveStartTime = performance.now(); - let logMessage = `Copilot: resolve(${context.documentContext.uri}:${context.documentContext.offset}):`; - const timeBudgetFactor = await this.fetchTimeBudgetFactor(context); + let logMessage = `Copilot: resolve(${context.documentContext.uri}: ${context.documentContext.offset}):`; + const cppTimeBudgetMs = await this.fetchTimeBudgetMs(context); const maxCaretDistance = await this.fetchMaxDistanceToCaret(context); + const maxSnippetCount = await this.fetchMaxSnippetCount(context); + const maxSnippetLength = await this.fetchMaxSnippetLength(context); + const doAggregateSnippets = await this.fetchDoAggregateSnippets(context); const telemetry = new CopilotCompletionContextTelemetry(); let copilotCompletionContext: CopilotCompletionContextResult | undefined; let copilotCompletionContextKind: CopilotCompletionKind = CopilotCompletionKind.Unknown; @@ -265,16 +355,12 @@ response.uri:${copilotCompletionContext.sourceFileUri || ""}:${copilotC try { featureFlag = await this.getEnabledFeatureFlag(context); telemetry.addRequestMetadata(context.documentContext.uri, context.documentContext.offset, - context.completionId, context.documentContext.languageId, { featureFlag, timeBudgetFactor, maxCaretDistance }); + context.completionId, context.documentContext.languageId, { featureFlag, timeBudgetMs: cppTimeBudgetMs, maxCaretDistance }); if (featureFlag === undefined) { return []; } - this.completionContextCancellation.cancel(); - this.completionContextCancellation = new vscode.CancellationTokenSource(); const cacheEntry: CacheEntry | undefined = this.completionContextCache.get(docUri.toString()); const defaultValue = cacheEntry?.[1]; - const computeSnippetsPromise = this.getCompletionContextWithCancellation(context, featureFlag, - resolveStartTime, telemetry.fork(), this.completionContextCancellation.token); - [copilotCompletionContext, copilotCompletionContextKind] = await this.waitForCompletionWithTimeoutAndCancellation( - computeSnippetsPromise, defaultValue, context.timeBudget * timeBudgetFactor, copilotCancel); + [copilotCompletionContext, copilotCompletionContextKind] = await this.resolveResultAndKind(context, featureFlag, + telemetry.fork(), defaultValue, resolveStartTime, cppTimeBudgetMs, maxSnippetCount, maxSnippetLength, doAggregateSnippets, copilotCancel); // Fix up copilotCompletionContextKind accounting for stale-cache-hits. if (copilotCompletionContextKind === CopilotCompletionKind.GotFromCache && copilotCompletionContext && cacheEntry) { @@ -292,12 +378,12 @@ response.uri:${copilotCompletionContext.sourceFileUri || ""}:${copilotC telemetry.addCopilotCanceled(duration); throw new CopilotCancellationError(); } - logMessage += ` (id:${copilotCompletionContext?.requestId}) `; + logMessage += ` (id: ${copilotCompletionContext?.requestId})`; return [...copilotCompletionContext?.snippets ?? [], ...copilotCompletionContext?.traits ?? []] as SupportedContextItem[]; } catch (e: any) { if (e instanceof CopilotCancellationError) { telemetry.addCopilotCanceled(CopilotCompletionContextProvider.getRoundedDuration(resolveStartTime)); - logMessage += ` (copilot cancellation) `; + logMessage += ` (copilot cancellation)`; throw e; } if (e instanceof InternalCancellationError) { @@ -312,12 +398,12 @@ response.uri:${copilotCompletionContext.sourceFileUri || ""}:${copilotC throw e; } finally { const duration: number = CopilotCompletionContextProvider.getRoundedDuration(resolveStartTime); - logMessage += `featureFlag:${featureFlag?.toString()},`; + logMessage += `featureFlag:${featureFlag?.toString()}, `; if (copilotCompletionContext === undefined) { - logMessage += ` result is undefined and no snippets provided (${copilotCompletionContextKind.toString()}), elapsed time:${duration}ms`; + logMessage += `result is undefined and no code snippets provided(${copilotCompletionContextKind.toString()}), elapsed time:${duration} ms`; } else { - logMessage += ` for ${docUri}:${docOffset} provided ${copilotCompletionContext.snippets.length} code-snippet(s) (${copilotCompletionContextKind.toString()}\ -${copilotCompletionContext?.areSnippetsMissing ? ", missing code-snippets" : ""}) and ${copilotCompletionContext.traits.length} trait(s), elapsed time:${duration}ms`; + logMessage += `for ${docUri}:${docOffset} provided ${copilotCompletionContext.snippets.length} code snippet(s)(${copilotCompletionContextKind.toString()}\ + ${copilotCompletionContext?.areSnippetsMissing ? ", missing code snippets" : ""}) and ${copilotCompletionContext.traits.length} trait(s), elapsed time:${duration} ms`; } telemetry.addResponseMetadata(copilotCompletionContext?.areSnippetsMissing ?? true, copilotCompletionContext?.snippets.length, copilotCompletionContext?.traits.length, @@ -349,7 +435,7 @@ ${copilotCompletionContext?.areSnippetsMissing ? ", missing code-snippets" : ""} console.debug("Failed to register the Copilot Context Provider."); properties["error"] = "Failed to register the Copilot Context Provider"; if (e instanceof CopilotContextProviderException) { - properties["error"] += `: ${e.message}`; + properties["error"] += `: ${e.message} `; } } finally { telemetry.logCopilotEvent(registerCopilotContextProvider, { ...properties }); diff --git a/Extension/src/LanguageServer/copilotCompletionContextTelemetry.ts b/Extension/src/LanguageServer/copilotCompletionContextTelemetry.ts index 26ecc7537..802204e9c 100644 --- a/Extension/src/LanguageServer/copilotCompletionContextTelemetry.ts +++ b/Extension/src/LanguageServer/copilotCompletionContextTelemetry.ts @@ -88,16 +88,19 @@ export class CopilotCompletionContextTelemetry { } public addRequestMetadata(uri: string, caretOffset: number, completionId: string, - languageId: string, { featureFlag, timeBudgetFactor, maxCaretDistance }: { - featureFlag?: CopilotCompletionContextFeatures; - timeBudgetFactor?: number; maxCaretDistance?: number; + languageId: string, { featureFlag, timeBudgetMs, maxCaretDistance, maxSnippetCount, maxSnippetLength, doAggregateSnippets }: { + featureFlag?: CopilotCompletionContextFeatures; timeBudgetMs?: number; maxCaretDistance?: number; + maxSnippetCount?: number; maxSnippetLength?: number; doAggregateSnippets?: boolean; } = {}): void { this.addProperty('request.completionId', completionId); this.addProperty('request.languageId', languageId); this.addMetric('request.caretOffset', caretOffset); this.addProperty('request.featureFlag', featureFlag?.toString() ?? ''); - if (timeBudgetFactor !== undefined) { this.addMetric('request.timeBudgetFactor', timeBudgetFactor); } + if (timeBudgetMs !== undefined) { this.addMetric('request.timeBudgetMs', timeBudgetMs); } if (maxCaretDistance !== undefined) { this.addMetric('request.maxCaretDistance', maxCaretDistance); } + if (maxSnippetCount !== undefined) { this.addMetric('request.maxSnippetCount', maxSnippetCount); } + if (maxSnippetLength !== undefined) { this.addMetric('request.maxSnippetLength', maxSnippetLength); } + if (doAggregateSnippets !== undefined) { this.addProperty('request.doAggregateSnippets', doAggregateSnippets.toString()); } } public addCppStandardVersionMetadata(standardVersion: string, elapsedMs: number): void { diff --git a/Extension/src/LanguageServer/settings.ts b/Extension/src/LanguageServer/settings.ts index 999e8114e..cff19f2d9 100644 --- a/Extension/src/LanguageServer/settings.ts +++ b/Extension/src/LanguageServer/settings.ts @@ -478,8 +478,8 @@ export class CppSettings extends Settings { } return this.getAsString("copilotHover"); } - public get cppCodeSnippetsFeatureNames(): string | undefined { - const value = super.Section.get("cppCodeSnippetsFeatureNames"); + public get cppContextProviderParams(): string | undefined { + const value = super.Section.get("copilotContextProviderParams"); if (isString(value)) { return value; } From 9eb37abe16fbe4f64cf74b1145e5f043f4fcf863 Mon Sep 17 00:00:00 2001 From: Colen Garoutte-Carson <49173979+Colengms@users.noreply.github.com> Date: Thu, 24 Apr 2025 15:27:06 -0700 Subject: [PATCH 13/25] Fix how C_Cpp.default recursive include settings are defined (#13549) --- Extension/package.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Extension/package.json b/Extension/package.json index 2a8ef1a61..554940501 100644 --- a/Extension/package.json +++ b/Extension/package.json @@ -900,31 +900,31 @@ "C_Cpp.default.recursiveIncludes.reduce": { "type": "string", "enum": [ + "", "always", "never", "default" ], - "default": "default", "markdownDescription": "%c_cpp.configuration.default.recursiveIncludes.reduce.markdownDescription%", "scope": "resource" }, "C_Cpp.default.recursiveIncludes.priority": { "type": "string", "enum": [ + "", "beforeSystemIncludes", "afterSystemIncludes" ], - "default": "afterSystemIncludes", "markdownDescription": "%c_cpp.configuration.default.recursiveIncludes.priority.markdownDescription%", "scope": "resource" }, "C_Cpp.default.recursiveIncludes.order": { "type": "string", "enum": [ + "", "depthFirst", "breadthFirst" ], - "default": "depthFirst", "markdownDescription": "%c_cpp.configuration.default.recursiveIncludes.order.markdownDescription%", "scope": "resource" }, From 4639ac60493b8f6648348c552ce49120fd3d424b Mon Sep 17 00:00:00 2001 From: Sean McManus Date: Fri, 25 Apr 2025 11:22:01 -0700 Subject: [PATCH 14/25] Update changelog for 1.25.2 (#13550) * Update changelog for 1.25.2. --- Extension/CHANGELOG.md | 6 +++++- Extension/package.json | 4 ++-- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/Extension/CHANGELOG.md b/Extension/CHANGELOG.md index 592bd66d5..f5c5e6350 100644 --- a/Extension/CHANGELOG.md +++ b/Extension/CHANGELOG.md @@ -1,5 +1,10 @@ # C/C++ for Visual Studio Code Changelog +## Version 1.25.2: April 25, 2025 +### Bug Fixes +* Fix a crash in `read_double`. [#13435](https://github.com/Microsoft/vscode-cpptools/issues/13435) +* Fix a crash with Copilot hover. + ## Version 1.25.1: April 22, 2025 ### Enhancement * Add a configuration warning message explaining why paths in quotes can't be found. [#11955](https://github.com/microsoft/vscode-cpptools/issues/11955) @@ -7,7 +12,6 @@ ### Bug Fixes * Fix no error appearing in the configuration UI when an invalid `compilerPath` is used. [#12661](https://github.com/microsoft/vscode-cpptools/issues/12661) * Fix the 'Debug C/C++ File' button sometimes disappearing. [#13400](https://github.com/microsoft/vscode-cpptools/issues/13400) -* Fix some cases of a tag parser crash with `read_double`. [#13435](https://github.com/Microsoft/vscode-cpptools/issues/13435) * Fix issues with the `recursiveIncludes` properties in the configuration UI editor. [PR #13498](https://github.com/microsoft/vscode-cpptools/pull/13498) * Update clang-tidy and clang-format from 20.1.2 to 20.1.3 (which has some bug fixes). * Fix some translation issues. diff --git a/Extension/package.json b/Extension/package.json index 554940501..147cd685c 100644 --- a/Extension/package.json +++ b/Extension/package.json @@ -2,7 +2,7 @@ "name": "cpptools", "displayName": "C/C++", "description": "C/C++ IntelliSense, debugging, and code browsing.", - "version": "1.25.1-main", + "version": "1.25.2-main", "publisher": "ms-vscode", "icon": "LanguageCCPP_color_128x.png", "readme": "README.md", @@ -6651,4 +6651,4 @@ "postcss": "^8.4.31", "gulp-typescript/**/glob-parent": "^5.1.2" } -} +} \ No newline at end of file From 35e53762355eff7afac62d43418036d68416d539 Mon Sep 17 00:00:00 2001 From: Colen Garoutte-Carson <49173979+Colengms@users.noreply.github.com> Date: Fri, 25 Apr 2025 15:07:35 -0700 Subject: [PATCH 15/25] Fix errors reported for recursive includes settings validations (#13554) --- Extension/src/LanguageServer/settings.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Extension/src/LanguageServer/settings.ts b/Extension/src/LanguageServer/settings.ts index cff19f2d9..449143439 100644 --- a/Extension/src/LanguageServer/settings.ts +++ b/Extension/src/LanguageServer/settings.ts @@ -444,9 +444,9 @@ export class CppSettings extends Settings { public get defaultBrowsePath(): string[] | undefined { return this.getArrayOfStringsWithUndefinedDefault("default.browse.path"); } public get defaultDatabaseFilename(): string | undefined { return changeBlankStringToUndefined(this.getAsStringOrUndefined("default.browse.databaseFilename")); } public get defaultLimitSymbolsToIncludedHeaders(): boolean { return this.getAsBoolean("default.browse.limitSymbolsToIncludedHeaders"); } - public get defaultRecursiveIncludesReduce(): string { return this.getAsString("default.recursiveIncludes.reduce"); } - public get defaultRecursiveIncludesPriority(): string { return this.getAsString("default.recursiveIncludes.priority"); } - public get defaultRecursiveIncludesOrder(): string { return this.getAsString("default.recursiveIncludes.order"); } + public get defaultRecursiveIncludesReduce(): string | undefined { return this.getAsStringOrUndefined("default.recursiveIncludes.reduce"); } + public get defaultRecursiveIncludesPriority(): string | undefined { return this.getAsStringOrUndefined("default.recursiveIncludes.priority"); } + public get defaultRecursiveIncludesOrder(): string | undefined { return this.getAsStringOrUndefined("default.recursiveIncludes.order"); } public get defaultSystemIncludePath(): string[] | undefined { return this.getArrayOfStringsWithUndefinedDefault("default.systemIncludePath"); } public get defaultEnableConfigurationSquiggles(): boolean { return this.getAsBoolean("default.enableConfigurationSquiggles"); } public get defaultCustomConfigurationVariables(): Associations | undefined { return this.getAsAssociations("default.customConfigurationVariables", true) ?? undefined; } From 4fc36fa25d8ea75b5d8dacf1ca7e66145fa768ba Mon Sep 17 00:00:00 2001 From: Luca <681992+lukka@users.noreply.github.com> Date: Fri, 25 Apr 2025 16:27:27 -0700 Subject: [PATCH 16/25] avoid reporting cancellation as errors (#13552) --- .../src/LanguageServer/copilotProviders.ts | 21 +++++++++++-------- .../tests/copilotProviders.test.ts | 10 ++++----- 2 files changed, 17 insertions(+), 14 deletions(-) diff --git a/Extension/src/LanguageServer/copilotProviders.ts b/Extension/src/LanguageServer/copilotProviders.ts index 32a63013e..e0551edcb 100644 --- a/Extension/src/LanguageServer/copilotProviders.ts +++ b/Extension/src/LanguageServer/copilotProviders.ts @@ -31,7 +31,7 @@ export interface CopilotApi { uri: vscode.Uri, context: { flags: Record }, cancellationToken: vscode.CancellationToken - ) => Promise<{ entries: vscode.Uri[]; traits?: CopilotTrait[] }> + ) => Promise<{ entries: vscode.Uri[]; traits?: CopilotTrait[] } | undefined> ): Disposable; getContextProviderAPI(version: string): Promise; } @@ -91,15 +91,18 @@ export async function registerRelatedFilesProvider(): Promise { return { entries: await includesPromise, traits: await traitsPromise }; } catch (exception) { - try { - const err: Error = exception as Error; - logger.getOutputChannelLogger().appendLine(localize("copilot.relatedfilesprovider.error", "Error while retrieving result. Reason: {0}", err.message)); + // Avoid logging the error message if it is a cancellation error. + if (exception instanceof vscode.CancellationError) { + telemetryProperties["error"] = "cancellation"; + telemetryProperties["cancellation"] = "true"; + throw exception; // Rethrow the cancellation error to be handled by the caller. + } else if (exception instanceof Error) { + telemetryProperties["error"] = "true"; + logger.getOutputChannelLogger().appendLine(localize("copilot.relatedfilesprovider.error", "Error while retrieving result. Reason: {0}", exception.message)); } - catch { - // Intentionally swallow any exception. - } - telemetryProperties["error"] = "true"; - throw exception; // Throw the exception for auto-retry. + + // In case of error retrieving the include files, we signal the caller of absence of the results by returning undefined. + return undefined; } finally { telemetryMetrics['duration'] = performance.now() - start; telemetry.logCopilotEvent('RelatedFilesProvider', telemetryProperties, telemetryMetrics); diff --git a/Extension/test/scenarios/SingleRootProject/tests/copilotProviders.test.ts b/Extension/test/scenarios/SingleRootProject/tests/copilotProviders.test.ts index ba466323d..4a5c2c824 100644 --- a/Extension/test/scenarios/SingleRootProject/tests/copilotProviders.test.ts +++ b/Extension/test/scenarios/SingleRootProject/tests/copilotProviders.test.ts @@ -24,7 +24,7 @@ describe('copilotProviders Tests', () => { let getClientsStub: sinon.SinonStub; let activeClientStub: sinon.SinonStubbedInstance; let vscodeGetExtensionsStub: sinon.SinonStub; - let callbackPromise: Promise<{ entries: vscode.Uri[]; traits?: CopilotTrait[] }> | undefined; + let callbackPromise: Promise<{ entries: vscode.Uri[]; traits?: CopilotTrait[] } | undefined> | undefined; let vscodeExtension: vscode.Extension; let telemetryStub: sinon.SinonStub; @@ -52,7 +52,7 @@ describe('copilotProviders Tests', () => { uri: vscode.Uri, context: { flags: Record }, cancellationToken: vscode.CancellationToken - ) => Promise<{ entries: vscode.Uri[]; traits?: CopilotTrait[] }> + ) => Promise<{ entries: vscode.Uri[]; traits?: CopilotTrait[] } | undefined> ): vscode.Disposable & { [Symbol.dispose](): void } { return { dispose: () => { }, @@ -88,13 +88,13 @@ describe('copilotProviders Tests', () => { }); const arrange = ({ vscodeExtension, getIncludeFiles, projectContext, rootUri, flags }: - { vscodeExtension?: vscode.Extension; getIncludeFiles?: GetIncludesResult; projectContext?: ProjectContext; rootUri?: vscode.Uri; flags?: Record } = - { vscodeExtension: undefined, getIncludeFiles: undefined, projectContext: undefined, rootUri: undefined, flags: {} } + { vscodeExtension?: vscode.Extension; getIncludeFiles?: GetIncludesResult; projectContext?: ProjectContext; rootUri?: vscode.Uri; flags?: Record } = + { vscodeExtension: undefined, getIncludeFiles: undefined, projectContext: undefined, rootUri: undefined, flags: {} } ) => { activeClientStub.getIncludes.resolves(getIncludeFiles); sinon.stub(lmTool, 'getProjectContext').resolves(projectContext); sinon.stub(activeClientStub, 'RootUri').get(() => rootUri); - mockCopilotApi.registerRelatedFilesProvider.callsFake((_providerId: { extensionId: string; languageId: string }, callback: (uri: vscode.Uri, context: { flags: Record }, cancellationToken: vscode.CancellationToken) => Promise<{ entries: vscode.Uri[]; traits?: CopilotTrait[] }>) => { + mockCopilotApi.registerRelatedFilesProvider.callsFake((_providerId: { extensionId: string; languageId: string }, callback: (uri: vscode.Uri, context: { flags: Record }, cancellationToken: vscode.CancellationToken) => Promise<{ entries: vscode.Uri[]; traits?: CopilotTrait[] } | undefined>) => { if (_providerId.languageId === 'cpp') { const tokenSource = new vscode.CancellationTokenSource(); try { From fd57bfd074d9db3a17e611dbc87c42db4edc3df4 Mon Sep 17 00:00:00 2001 From: Sean McManus Date: Mon, 28 Apr 2025 11:57:31 -0700 Subject: [PATCH 17/25] Localization update for 1.25.3 (#13561) * Localization - Translated Strings --- .../i18n/chs/src/LanguageServer/configurations.i18n.json | 2 +- .../i18n/cht/src/LanguageServer/configurations.i18n.json | 2 +- Extension/i18n/csy/package.i18n.json | 2 +- .../i18n/csy/src/LanguageServer/configurations.i18n.json | 2 +- Extension/i18n/deu/package.i18n.json | 2 +- .../i18n/deu/src/LanguageServer/configurations.i18n.json | 2 +- .../i18n/esn/src/LanguageServer/configurations.i18n.json | 2 +- .../i18n/fra/src/LanguageServer/configurations.i18n.json | 2 +- Extension/i18n/ita/package.i18n.json | 4 ++-- .../i18n/ita/src/LanguageServer/configurations.i18n.json | 2 +- .../i18n/jpn/src/LanguageServer/configurations.i18n.json | 2 +- .../i18n/kor/src/LanguageServer/configurations.i18n.json | 2 +- .../i18n/plk/src/LanguageServer/configurations.i18n.json | 2 +- .../i18n/ptb/src/LanguageServer/configurations.i18n.json | 2 +- .../i18n/rus/src/LanguageServer/configurations.i18n.json | 2 +- Extension/i18n/trk/package.i18n.json | 4 ++-- .../i18n/trk/src/LanguageServer/configurations.i18n.json | 2 +- 17 files changed, 19 insertions(+), 19 deletions(-) diff --git a/Extension/i18n/chs/src/LanguageServer/configurations.i18n.json b/Extension/i18n/chs/src/LanguageServer/configurations.i18n.json index a2a854e4c..bcee90c66 100644 --- a/Extension/i18n/chs/src/LanguageServer/configurations.i18n.json +++ b/Extension/i18n/chs/src/LanguageServer/configurations.i18n.json @@ -14,7 +14,7 @@ "cannot.find": "无法找到: {0}", "cannot.resolve.compiler.path": "输入无效,无法解析编译器路径", "path.is.not.a.file": "路径不是文件: {0}", - "wrapped.with.quotes": "Do not add extra quotes around paths.", + "wrapped.with.quotes": "不要在路径周围添加额外的引号。", "path.is.not.a.directory": "路径不是目录: {0}", "duplicate.name": "{0} 重复。配置名称应是唯一的。", "multiple.paths.not.allowed": "不允许使用多个路径。", diff --git a/Extension/i18n/cht/src/LanguageServer/configurations.i18n.json b/Extension/i18n/cht/src/LanguageServer/configurations.i18n.json index ab3ad8dec..6dad8fbeb 100644 --- a/Extension/i18n/cht/src/LanguageServer/configurations.i18n.json +++ b/Extension/i18n/cht/src/LanguageServer/configurations.i18n.json @@ -14,7 +14,7 @@ "cannot.find": "找不到: {0}", "cannot.resolve.compiler.path": "輸入無效,無法解析編譯器路徑", "path.is.not.a.file": "路徑不是檔案: {0}", - "wrapped.with.quotes": "Do not add extra quotes around paths.", + "wrapped.with.quotes": "請勿在路徑周圍新增額外的引號。", "path.is.not.a.directory": "路徑不是目錄: {0}", "duplicate.name": "{0} 重複。組態名稱應該是唯一的。", "multiple.paths.not.allowed": "不允許使用多個路徑。", diff --git a/Extension/i18n/csy/package.i18n.json b/Extension/i18n/csy/package.i18n.json index 6176c3c95..f5b1d07f5 100644 --- a/Extension/i18n/csy/package.i18n.json +++ b/Extension/i18n/csy/package.i18n.json @@ -254,7 +254,7 @@ "c_cpp.configuration.hover.description": "Pokud je tato možnost zakázaná, podrobnosti o najetí myší už nebude poskytovat jazykový server.", "c_cpp.configuration.vcpkg.enabled.markdownDescription": "Povolte integrační služby pro [správce závislostí vcpkg](https://aka.ms/vcpkg/).", "c_cpp.configuration.addNodeAddonIncludePaths.markdownDescription": "Pokud existují závislosti, přidejte cesty pro zahrnuté soubory z `nan` a `node-addon-api`.", - "c_cpp.configuration.copilotHover.markdownDescription": "Pokud je zakázáno (`disabled`), při najetí myší se nezobrazí možnost Vygenerovat souhrn Copilot.", + "c_cpp.configuration.copilotHover.markdownDescription": "Pokud je zakázáno (`disabled`), při najetí myší se nezobrazí možnost Vygenerovat souhrn Copilotu.", "c_cpp.configuration.renameRequiresIdentifier.markdownDescription": "Když se tato hodnota nastaví na `true`, operace Přejmenovat symbol bude vyžadovat platný identifikátor C/C++.", "c_cpp.configuration.autocompleteAddParentheses.markdownDescription": "Pokud je hodnota `true`, automatické dokončování automaticky přidá za volání funkcí znak `(`. V takovém případě se může přidat i znak `)`, což záleží na hodnotě nastavení `#editor.autoClosingBrackets#`.", "c_cpp.configuration.filesExclude.markdownDescription": "Nakonfigurujte vzory glob pro vyloučení složek (a souborů, pokud se změní `#C_Cpp.exclusionPolicy#`). Ty jsou specifické pro rozšíření C/C++ a doplňují `#files.exclude#`, ale na rozdíl od `#files.exclude#` platí také pro cesty mimo aktuální složku pracovního prostoru a neodebírají se ze zobrazení Průzkumníka. Přečtěte si další informace o [vzorech glob](https://code.visualstudio.com/docs/editor/codebasics#_advanced-search-options).", diff --git a/Extension/i18n/csy/src/LanguageServer/configurations.i18n.json b/Extension/i18n/csy/src/LanguageServer/configurations.i18n.json index dbfbc3142..c757fdc83 100644 --- a/Extension/i18n/csy/src/LanguageServer/configurations.i18n.json +++ b/Extension/i18n/csy/src/LanguageServer/configurations.i18n.json @@ -14,7 +14,7 @@ "cannot.find": "Nepovedlo se najít: {0}", "cannot.resolve.compiler.path": "Neplatný vstup, nedá se přeložit cesta ke kompilátoru.", "path.is.not.a.file": "Cesta není soubor: {0}", - "wrapped.with.quotes": "Do not add extra quotes around paths.", + "wrapped.with.quotes": "Nepřidávejte nadbytečné uvozovky kolem cest.", "path.is.not.a.directory": "Cesta není adresář: {0}", "duplicate.name": "{0} je duplicitní. Název konfigurace by měl být jedinečný.", "multiple.paths.not.allowed": "Více cest není povoleno.", diff --git a/Extension/i18n/deu/package.i18n.json b/Extension/i18n/deu/package.i18n.json index e6cab6600..42d18a86e 100644 --- a/Extension/i18n/deu/package.i18n.json +++ b/Extension/i18n/deu/package.i18n.json @@ -430,7 +430,7 @@ "c_cpp.walkthrough.create.cpp.file.description": "[Öffnen](command:toSide:workbench.action.files.openFile) oder [erstellen](command:toSide:workbench.action.files.newUntitledFile?%7B%22languageId%22%3A%22cpp%22%7D) eine C++-Datei. Speichern Sie die Datei unbedingt mit der Erweiterung \".cpp\" extension, z. B. \"helloworld.cpp\". \n[Erstellen Sie eine C++-Datei](command:toSide:workbench.action.files.newUntitledFile?%7B%22languageId%22%3A%22cpp%22%7D)", "c_cpp.walkthrough.create.cpp.file.altText": "Öffnen Sie eine C++-Datei oder einen Ordner mit einem C++-Projekt.", "c_cpp.walkthrough.command.prompt.title": "Von der Developer Command Prompt for VS starten", - "c_cpp.walkthrough.command.prompt.description": "Bei Verwendung des Microsoft Visual Studio C++-Compilers erfordert die C++-Erweiterung, dass Sie VS Code aus der Developer Command Prompt for VS starten. Befolgen Sie die Anweisungen auf der rechten Seite, um den Neustart zu starten.\n[Reload Window](command:workbench.action.reloadWindow)", + "c_cpp.walkthrough.command.prompt.description": "Bei Verwendung des Microsoft Visual Studio C++-Compilers erfordert die C++-Erweiterung, dass Sie VS Code aus Developer Command Prompt for VS starten. Befolgen Sie die Anweisungen auf der rechten Seite, um den Neustart zu starten.\n[Reload Window](command:workbench.action.reloadWindow)", "c_cpp.walkthrough.run.debug.title": "Ausführen und Debuggen Ihrer C++-Datei", "c_cpp.walkthrough.run.debug.mac.description": "Öffnen Sie Ihre C++-Datei, und klicken Sie in der oberen rechten Ecke des Editors auf die Wiedergabeschaltfläche, oder drücken Sie F5, wenn Sie die Datei verwenden. Wählen Sie \"clang++ – Aktive Datei erstellen und debuggen\" aus, die mit dem Debugger ausgeführt werden soll.", "c_cpp.walkthrough.run.debug.linux.description": "Öffnen Sie Ihre C++-Datei, und klicken Sie in der oberen rechten Ecke des Editors auf die Wiedergabeschaltfläche, oder drücken Sie F5, wenn Sie die Datei verwenden. Wählen Sie \"g++ – Aktive Datei erstellen und debuggen\" aus, die mit dem Debugger ausgeführt werden soll.", diff --git a/Extension/i18n/deu/src/LanguageServer/configurations.i18n.json b/Extension/i18n/deu/src/LanguageServer/configurations.i18n.json index 75dbd822b..d1571545b 100644 --- a/Extension/i18n/deu/src/LanguageServer/configurations.i18n.json +++ b/Extension/i18n/deu/src/LanguageServer/configurations.i18n.json @@ -14,7 +14,7 @@ "cannot.find": "Nicht gefunden: {0}", "cannot.resolve.compiler.path": "Ungültige Eingabe, Compilerpfad kann nicht aufgelöst werden.", "path.is.not.a.file": "Der Pfad ist keine Datei: {0}", - "wrapped.with.quotes": "Do not add extra quotes around paths.", + "wrapped.with.quotes": "Fügen Sie keine zusätzlichen Anführungszeichen um Pfade hinzu.", "path.is.not.a.directory": "Der Pfad ist kein Verzeichnis: {0}", "duplicate.name": "\"{0}\" ist ein Duplikat. Der Konfigurationsname muss eindeutig sein.", "multiple.paths.not.allowed": "Mehrere Pfade sind nicht zulässig.", diff --git a/Extension/i18n/esn/src/LanguageServer/configurations.i18n.json b/Extension/i18n/esn/src/LanguageServer/configurations.i18n.json index dd3789012..9f7a3bea5 100644 --- a/Extension/i18n/esn/src/LanguageServer/configurations.i18n.json +++ b/Extension/i18n/esn/src/LanguageServer/configurations.i18n.json @@ -14,7 +14,7 @@ "cannot.find": "No se encuentra {0}", "cannot.resolve.compiler.path": "Entrada no válida. No se puede resolver la ruta de acceso del compilador.", "path.is.not.a.file": "La ruta de acceso no es un archivo: {0}", - "wrapped.with.quotes": "Do not add extra quotes around paths.", + "wrapped.with.quotes": "No agregue comillas adicionales alrededor de las rutas de acceso.", "path.is.not.a.directory": "La ruta de acceso no es un directorio: {0}", "duplicate.name": "{0} es un duplicado. El nombre de la configuración debe ser único.", "multiple.paths.not.allowed": "No se permiten varias rutas de acceso.", diff --git a/Extension/i18n/fra/src/LanguageServer/configurations.i18n.json b/Extension/i18n/fra/src/LanguageServer/configurations.i18n.json index b0b131957..9fe0e9ab1 100644 --- a/Extension/i18n/fra/src/LanguageServer/configurations.i18n.json +++ b/Extension/i18n/fra/src/LanguageServer/configurations.i18n.json @@ -14,7 +14,7 @@ "cannot.find": "{0} introuvable", "cannot.resolve.compiler.path": "Entrée non valide, impossible de résoudre le chemin du compilateur", "path.is.not.a.file": "Le chemin n'est pas un fichier : {0}", - "wrapped.with.quotes": "Do not add extra quotes around paths.", + "wrapped.with.quotes": "N’ajoutez pas de guillemets supplémentaires autour des chemins.", "path.is.not.a.directory": "Le chemin n'est pas un répertoire : {0}", "duplicate.name": "{0} est dupliqué. Le nom de configuration doit être unique.", "multiple.paths.not.allowed": "Il est interdit d’utiliser plusieurs chemin d’accès.", diff --git a/Extension/i18n/ita/package.i18n.json b/Extension/i18n/ita/package.i18n.json index 0ef6c2b63..7f545c998 100644 --- a/Extension/i18n/ita/package.i18n.json +++ b/Extension/i18n/ita/package.i18n.json @@ -429,8 +429,8 @@ "c_cpp.walkthrough.create.cpp.file.title": "Creare un file C++", "c_cpp.walkthrough.create.cpp.file.description": "[Apri](command:toSide:workbench.action.files.openFile) o [Crea](command:toSide:workbench.action.files.newUntitledFile?%7B%22languageId%22%3A%22cpp%22%7D) un file C++. Assicurati di salvarlo con l'estensione \".cpp\", ad esempio \"helloworld.cpp\". \n[Crea un file C++](command:toSide:workbench.action.files.newUntitledFile?%7B%22languageId%22%3A%22cpp%22%7D)", "c_cpp.walkthrough.create.cpp.file.altText": "Apre un file C++ o una cartella con un progetto C++.", - "c_cpp.walkthrough.command.prompt.title": "Avvia dal Prompt dei comandi per gli sviluppatori per Visual Studio", - "c_cpp.walkthrough.command.prompt.description": "Nell'ambito dell'utilizzo del compilatore C++ di Microsoft Visual Studio C++, l'estensione C++ richiede di avviare VS Code dal Prompt dei comandi per gli sviluppatori per VS. Seguire le istruzioni a destra per riavviare.\n[Ricarica finestra](command:workbench.action.reloadWindow)", + "c_cpp.walkthrough.command.prompt.title": "Avvia dal Developer Command Prompt for VS", + "c_cpp.walkthrough.command.prompt.description": "Nell'ambito dell'utilizzo del compilatore C++ di Microsoft Visual Studio C++, l'estensione C++ richiede di avviare VS Code dal Developer Command Prompt for VS. Seguire le istruzioni a destra per riavviare.\n[Ricarica finestra](command:workbench.action.reloadWindow)", "c_cpp.walkthrough.run.debug.title": "Esegui con debug il file C++", "c_cpp.walkthrough.run.debug.mac.description": "Aprire il file C++ e fare clic sul pulsante Riproduci nell'angolo in alto a destra dell'editor oppure premere F5 quando è presente sul file. Selezionare \"clang++ - Compila ed esegui il debug del file attivo\" da eseguire con il debugger.", "c_cpp.walkthrough.run.debug.linux.description": "Aprire il file C++ e fare clic sul pulsante Riproduci nell'angolo in alto a destra dell'editor oppure premere F5 quando è presente sul file. Selezionare \"g++ - Compila ed esegue il debug del file attivo\" da eseguire con il debugger.", diff --git a/Extension/i18n/ita/src/LanguageServer/configurations.i18n.json b/Extension/i18n/ita/src/LanguageServer/configurations.i18n.json index 9ff2af2c3..a7838968f 100644 --- a/Extension/i18n/ita/src/LanguageServer/configurations.i18n.json +++ b/Extension/i18n/ita/src/LanguageServer/configurations.i18n.json @@ -14,7 +14,7 @@ "cannot.find": "Non è possibile trovare: {0}", "cannot.resolve.compiler.path": "Input non valido. Non è possibile risolvere il percorso del compilatore", "path.is.not.a.file": "Il percorso non è un file: {0}", - "wrapped.with.quotes": "Do not add extra quotes around paths.", + "wrapped.with.quotes": "Non aggiungere virgolette aggiuntive intorno ai percorsi.", "path.is.not.a.directory": "Il percorso non è una directory: {0}", "duplicate.name": "{0} è duplicato. Il nome della configurazione deve essere univoco.", "multiple.paths.not.allowed": "Più percorsi non sono consentiti.", diff --git a/Extension/i18n/jpn/src/LanguageServer/configurations.i18n.json b/Extension/i18n/jpn/src/LanguageServer/configurations.i18n.json index aab707053..3336b4cac 100644 --- a/Extension/i18n/jpn/src/LanguageServer/configurations.i18n.json +++ b/Extension/i18n/jpn/src/LanguageServer/configurations.i18n.json @@ -14,7 +14,7 @@ "cannot.find": "{0} が見つかりません。", "cannot.resolve.compiler.path": "無効な入力です。コンパイラ パスを解決できません", "path.is.not.a.file": "パスがファイルではありません: {0}", - "wrapped.with.quotes": "Do not add extra quotes around paths.", + "wrapped.with.quotes": "パスの前後に余分な引用符を追加しないでください。", "path.is.not.a.directory": "パスがディレクトリではありません: {0}", "duplicate.name": "{0} が重複しています。構成名は一意である必要があります。", "multiple.paths.not.allowed": "複数のパスは使用できません。", diff --git a/Extension/i18n/kor/src/LanguageServer/configurations.i18n.json b/Extension/i18n/kor/src/LanguageServer/configurations.i18n.json index cc41f0652..49fc09f86 100644 --- a/Extension/i18n/kor/src/LanguageServer/configurations.i18n.json +++ b/Extension/i18n/kor/src/LanguageServer/configurations.i18n.json @@ -14,7 +14,7 @@ "cannot.find": "찾을 수 없음: {0}", "cannot.resolve.compiler.path": "입력이 잘못되었습니다. 컴파일러 경로를 확인할 수 없습니다.", "path.is.not.a.file": "경로가 파일이 아님: {0}", - "wrapped.with.quotes": "Do not add extra quotes around paths.", + "wrapped.with.quotes": "경로 주위에 따옴표를 추가하지 마세요.", "path.is.not.a.directory": "경로가 디렉터리가 아님: {0}", "duplicate.name": "{0}은(는) 중복됩니다. 구성 이름은 고유해야 합니다.", "multiple.paths.not.allowed": "여러 경로는 허용되지 않습니다.", diff --git a/Extension/i18n/plk/src/LanguageServer/configurations.i18n.json b/Extension/i18n/plk/src/LanguageServer/configurations.i18n.json index 14f2b9d9d..fbf2ec98b 100644 --- a/Extension/i18n/plk/src/LanguageServer/configurations.i18n.json +++ b/Extension/i18n/plk/src/LanguageServer/configurations.i18n.json @@ -14,7 +14,7 @@ "cannot.find": "Nie można znaleźć: {0}", "cannot.resolve.compiler.path": "Nieprawidłowe dane wejściowe, nie można rozpoznać ścieżki kompilatora", "path.is.not.a.file": "Ścieżka nie jest plikiem: {0}", - "wrapped.with.quotes": "Do not add extra quotes around paths.", + "wrapped.with.quotes": "Nie dodawaj dodatkowych cudzysłowów wokół ścieżek.", "path.is.not.a.directory": "Ścieżka nie jest katalogiem: {0}", "duplicate.name": "Element {0} jest duplikatem. Nazwa konfiguracji musi być unikatowa.", "multiple.paths.not.allowed": "Wiele ścieżek jest niedozwolonych.", diff --git a/Extension/i18n/ptb/src/LanguageServer/configurations.i18n.json b/Extension/i18n/ptb/src/LanguageServer/configurations.i18n.json index 856135f5f..827d4c520 100644 --- a/Extension/i18n/ptb/src/LanguageServer/configurations.i18n.json +++ b/Extension/i18n/ptb/src/LanguageServer/configurations.i18n.json @@ -14,7 +14,7 @@ "cannot.find": "Não é possível localizar: {0}", "cannot.resolve.compiler.path": "Entrada inválida. Não é possível resolver o caminho do compilador", "path.is.not.a.file": "O caminho não é um arquivo: {0}", - "wrapped.with.quotes": "Do not add extra quotes around paths.", + "wrapped.with.quotes": "Não adicione aspas extras ao redor de caminhos.", "path.is.not.a.directory": "O caminho não é um diretório: {0}", "duplicate.name": "{0} é uma duplicata. O nome da configuração deve ser exclusivo.", "multiple.paths.not.allowed": "Vários caminhos não são permitidos.", diff --git a/Extension/i18n/rus/src/LanguageServer/configurations.i18n.json b/Extension/i18n/rus/src/LanguageServer/configurations.i18n.json index 758c606bc..6898427e7 100644 --- a/Extension/i18n/rus/src/LanguageServer/configurations.i18n.json +++ b/Extension/i18n/rus/src/LanguageServer/configurations.i18n.json @@ -14,7 +14,7 @@ "cannot.find": "Не удается найти: {0}", "cannot.resolve.compiler.path": "Недопустимые входные данные; не удается разрешить путь компилятора", "path.is.not.a.file": "Путь не является файлом: {0}", - "wrapped.with.quotes": "Do not add extra quotes around paths.", + "wrapped.with.quotes": "Не добавляйте лишние кавычки вокруг путей.", "path.is.not.a.directory": "Путь не является каталогом: {0}", "duplicate.name": "{0} является дубликатом. Имя конфигурации должно быть уникальным.", "multiple.paths.not.allowed": "Запрещено использовать несколько путей.", diff --git a/Extension/i18n/trk/package.i18n.json b/Extension/i18n/trk/package.i18n.json index d36424816..9b0406680 100644 --- a/Extension/i18n/trk/package.i18n.json +++ b/Extension/i18n/trk/package.i18n.json @@ -429,8 +429,8 @@ "c_cpp.walkthrough.create.cpp.file.title": "C++ dosyası oluşturun", "c_cpp.walkthrough.create.cpp.file.description": "Bir C++ dosyasını [açın](command:toSide:workbench.action.files.openFile) veya C++ dosyası [oluşturun](command:toSide:workbench.action.files.newUntitledFile?%7B%22languageId%22%3A%22cpp%22%7D). Dosyayı \".cpp\" uzantısıyla (ör. \"helloworld.cpp\".) kaydetmeyi unutmayın.\n[C++ dosyası oluşturun](command:toSide:workbench.action.files.newUntitledFile?%7B%22languageId%22%3A%22cpp%22%7D)", "c_cpp.walkthrough.create.cpp.file.altText": "Bir C++ dosyası veya bir klasörü C++ projesiyle açın.", - "c_cpp.walkthrough.command.prompt.title": "VS için Developer Command Prompt'tan başlat", - "c_cpp.walkthrough.command.prompt.description": "Microsoft Visual Studio C++ derleyicisini kullanırken, C++ uzantısı, VS için Developer Command Prompt'tan VS Code'u başlatmanızı gerektirir. Yeniden başlatmak için sağdaki talimatları izleyin.\n[Yeniden Yükleme Penceresi](command:workbench.action.reloadWindow)", + "c_cpp.walkthrough.command.prompt.title": "Developer Command Prompt for VS'tan başlat", + "c_cpp.walkthrough.command.prompt.description": "Microsoft Visual Studio C++ derleyicisini kullanırken, C++ uzantısı, Developer Command Prompt for VS'tan VS Code'u başlatmanızı gerektirir. Yeniden başlatmak için sağdaki talimatları izleyin.\n[Yeniden Yükleme Penceresi](command:workbench.action.reloadWindow)", "c_cpp.walkthrough.run.debug.title": "C++ dosyanızı çalıştırın ve hata ayıklayın", "c_cpp.walkthrough.run.debug.mac.description": "C++ dosyanızı açın ve düzenleyicinin sağ üst köşesindeki oynat düğmesine tıklayın veya dosyadayken F5'e basın. Hata ayıklayıcı ile çalıştırmak için \"clang++ - Etkin dosya derle ve hata ayıkla\" seçeneğini seçin.", "c_cpp.walkthrough.run.debug.linux.description": "C++ dosyanızı açın ve düzenleyicinin sağ üst köşesindeki oynat düğmesine tıklayın veya dosyadayken F5'e basın. Hata ayıklayıcı ile çalıştırmak için \"g++ - Aktif dosya derle ve hata ayıkla\"yı seçin.", diff --git a/Extension/i18n/trk/src/LanguageServer/configurations.i18n.json b/Extension/i18n/trk/src/LanguageServer/configurations.i18n.json index 1f1a6369b..1be7fb7c2 100644 --- a/Extension/i18n/trk/src/LanguageServer/configurations.i18n.json +++ b/Extension/i18n/trk/src/LanguageServer/configurations.i18n.json @@ -14,7 +14,7 @@ "cannot.find": "{0} bulunamıyor", "cannot.resolve.compiler.path": "Giriş geçersiz, derleyici yolu çözümlenemiyor", "path.is.not.a.file": "Yol bir dosya değil: {0}", - "wrapped.with.quotes": "Do not add extra quotes around paths.", + "wrapped.with.quotes": "Yolların etrafına fazladan tırnak işareti eklemeyin.", "path.is.not.a.directory": "Yol bir dizin değil: {0}", "duplicate.name": "{0} yineleniyor. Yapılandırma adı benzersiz olmalıdır.", "multiple.paths.not.allowed": "Birden fazla yola izin verilmez.", From 73c95bef484dc8c92b911f339cb416cc81cf8698 Mon Sep 17 00:00:00 2001 From: Sean McManus Date: Mon, 28 Apr 2025 12:04:43 -0700 Subject: [PATCH 18/25] Update changelog for 1.25.3. (#13560) * Update changelog for 1.25.3. --- Extension/CHANGELOG.md | 22 +++++++--------------- Extension/package.json | 2 +- 2 files changed, 8 insertions(+), 16 deletions(-) diff --git a/Extension/CHANGELOG.md b/Extension/CHANGELOG.md index f5c5e6350..ac662dd8a 100644 --- a/Extension/CHANGELOG.md +++ b/Extension/CHANGELOG.md @@ -1,32 +1,24 @@ # C/C++ for Visual Studio Code Changelog -## Version 1.25.2: April 25, 2025 -### Bug Fixes -* Fix a crash in `read_double`. [#13435](https://github.com/Microsoft/vscode-cpptools/issues/13435) -* Fix a crash with Copilot hover. - -## Version 1.25.1: April 22, 2025 +## Version 1.25.3: April 28, 2025 ### Enhancement * Add a configuration warning message explaining why paths in quotes can't be found. [#11955](https://github.com/microsoft/vscode-cpptools/issues/11955) +* Improve the description of the `C_Cpp.copilotHover` setting. [PR #13461](https://github.com/microsoft/vscode-cpptools/pull/13461) ### Bug Fixes * Fix no error appearing in the configuration UI when an invalid `compilerPath` is used. [#12661](https://github.com/microsoft/vscode-cpptools/issues/12661) * Fix the 'Debug C/C++ File' button sometimes disappearing. [#13400](https://github.com/microsoft/vscode-cpptools/issues/13400) -* Fix issues with the `recursiveIncludes` properties in the configuration UI editor. [PR #13498](https://github.com/microsoft/vscode-cpptools/pull/13498) -* Update clang-tidy and clang-format from 20.1.2 to 20.1.3 (which has some bug fixes). -* Fix some translation issues. - -## Version 1.25.0: April 10, 2025 -### Enhancement -* Improve the description of the `C_Cpp.copilotHover` setting. [PR #13461](https://github.com/microsoft/vscode-cpptools/pull/13461) - -### Bug Fixes +* Fix a crash in `read_double`. [#13435](https://github.com/Microsoft/vscode-cpptools/issues/13435) * Fix the handling of default file associations for certain file extensions. [PR #13455](https://github.com/microsoft/vscode-cpptools/pull/13455) * Fix shell parsing of the arguments of a full command line in `compilerPath`. [PR #13468](https://github.com/microsoft/vscode-cpptools/pull/13468) * Fix C and CUDA files being interpreted as C++ in `compile_commands.json`. [#13471](https://github.com/microsoft/vscode-cpptools/issues/13471) * Stop automatically mapping a `.C` file to C++ if it's already set in `files.associations`. [PR #13476](https://github.com/microsoft/vscode-cpptools/pull/13476) +* Fix issues with the `recursiveIncludes` properties in the configuration UI editor. [PR #13498](https://github.com/microsoft/vscode-cpptools/pull/13498) * Fix IntelliSense not updating after the language ID is changed, and prevent the language ID from being changed if it's set from `compile_commands.json` or a configuration provider. +* Update clang-tidy and clang-format from 20.1.2 to 20.1.3 (which has some bug fixes). * Fix a case where language server crash messages appear after 4 minutes. +* Fix a crash with Copilot hover. +* Fix some translation issues. ## Version 1.24.5: April 3, 2025 ### New Feature diff --git a/Extension/package.json b/Extension/package.json index 147cd685c..559028bec 100644 --- a/Extension/package.json +++ b/Extension/package.json @@ -2,7 +2,7 @@ "name": "cpptools", "displayName": "C/C++", "description": "C/C++ IntelliSense, debugging, and code browsing.", - "version": "1.25.2-main", + "version": "1.25.3-main", "publisher": "ms-vscode", "icon": "LanguageCCPP_color_128x.png", "readme": "README.md", From ff55c59e19b5a5711e78256102768e918aefee59 Mon Sep 17 00:00:00 2001 From: Luca <681992+lukka@users.noreply.github.com> Date: Mon, 28 Apr 2025 15:01:25 -0700 Subject: [PATCH 19/25] telemetry addition (#13564) --- .../src/LanguageServer/copilotCompletionContextProvider.ts | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/Extension/src/LanguageServer/copilotCompletionContextProvider.ts b/Extension/src/LanguageServer/copilotCompletionContextProvider.ts index d255f24a3..59c5d4711 100644 --- a/Extension/src/LanguageServer/copilotCompletionContextProvider.ts +++ b/Extension/src/LanguageServer/copilotCompletionContextProvider.ts @@ -355,7 +355,10 @@ response.uri:${copilotCompletionContext.sourceFileUri || ""}:${copilotC try { featureFlag = await this.getEnabledFeatureFlag(context); telemetry.addRequestMetadata(context.documentContext.uri, context.documentContext.offset, - context.completionId, context.documentContext.languageId, { featureFlag, timeBudgetMs: cppTimeBudgetMs, maxCaretDistance }); + context.completionId, context.documentContext.languageId, { + featureFlag, timeBudgetMs: cppTimeBudgetMs, maxCaretDistance, + maxSnippetCount, maxSnippetLength, doAggregateSnippets + }); if (featureFlag === undefined) { return []; } const cacheEntry: CacheEntry | undefined = this.completionContextCache.get(docUri.toString()); const defaultValue = cacheEntry?.[1]; From 48c961aedcab2936c3eb78e7409ebd3a1de95cf4 Mon Sep 17 00:00:00 2001 From: Sean McManus Date: Mon, 28 Apr 2025 16:02:23 -0700 Subject: [PATCH 20/25] Minor fix. (#13565) --- Extension/CHANGELOG.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Extension/CHANGELOG.md b/Extension/CHANGELOG.md index ac662dd8a..99ff1a72b 100644 --- a/Extension/CHANGELOG.md +++ b/Extension/CHANGELOG.md @@ -1,7 +1,7 @@ # C/C++ for Visual Studio Code Changelog ## Version 1.25.3: April 28, 2025 -### Enhancement +### Enhancements * Add a configuration warning message explaining why paths in quotes can't be found. [#11955](https://github.com/microsoft/vscode-cpptools/issues/11955) * Improve the description of the `C_Cpp.copilotHover` setting. [PR #13461](https://github.com/microsoft/vscode-cpptools/pull/13461) From 42a9eba7039ddc91add8577fd84ebc5f51641ffe Mon Sep 17 00:00:00 2001 From: Glen Chung <105310954+kuchungmsft@users.noreply.github.com> Date: Tue, 29 Apr 2025 11:15:20 -0700 Subject: [PATCH 21/25] Add Timestamp to Copilot Logging (#13570) To correlate with the other log files for better troubleshooting experience. --- .../src/LanguageServer/copilotCompletionContextProvider.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Extension/src/LanguageServer/copilotCompletionContextProvider.ts b/Extension/src/LanguageServer/copilotCompletionContextProvider.ts index 59c5d4711..ca74a0321 100644 --- a/Extension/src/LanguageServer/copilotCompletionContextProvider.ts +++ b/Extension/src/LanguageServer/copilotCompletionContextProvider.ts @@ -194,7 +194,7 @@ response.uri:${copilotCompletionContext.sourceFileUri || ""}:${copilotC return undefined; } finally { this.logger. - appendLineAtLevel(7, logMessage); + appendLineAtLevel(7, `[${new Date().toISOString().replace('T', ' ').replace('Z', '')}] ${logMessage}`); telemetry.send("cache"); } } @@ -414,7 +414,7 @@ response.uri:${copilotCompletionContext.sourceFileUri || ""}:${copilotC telemetry.addResolvedElapsed(duration); telemetry.addCacheSize(this.completionContextCache.size); telemetry.send(); - this.logger.appendLineAtLevel(7, logMessage); + this.logger.appendLineAtLevel(7, `[${new Date().toISOString().replace('T', ' ').replace('Z', '')}] ${logMessage}`); } } From 56576c8becdacfcefa1fe006e9921ed8ce3b9e2e Mon Sep 17 00:00:00 2001 From: Bob Brown Date: Wed, 30 Apr 2025 17:16:42 -0700 Subject: [PATCH 22/25] refactor the compilerPath verification to get consistent results in JSON and UI verification (#13553) --- Extension/.gitignore | 1 + Extension/c_cpp_properties.schema.json | 6 +- .../src/LanguageServer/configurations.ts | 225 +++++++-------- .../LanguageServer/cppBuildTaskProvider.ts | 2 +- Extension/src/common.ts | 84 +++--- .../SimpleCppProject/assets/b i n/clang++ | 0 .../SimpleCppProject/assets/b i n/clang++.exe | 0 .../SimpleCppProject/assets/bin/cl.exe | 0 .../SimpleCppProject/assets/bin/clang-cl.exe | 0 .../scenarios/SimpleCppProject/assets/bin/gcc | 0 .../SimpleCppProject/assets/bin/gcc.exe | 0 .../tests/compilerPath.test.ts | 272 ++++++++++++++++++ 12 files changed, 416 insertions(+), 174 deletions(-) create mode 100644 Extension/test/scenarios/SimpleCppProject/assets/b i n/clang++ create mode 100644 Extension/test/scenarios/SimpleCppProject/assets/b i n/clang++.exe create mode 100644 Extension/test/scenarios/SimpleCppProject/assets/bin/cl.exe create mode 100644 Extension/test/scenarios/SimpleCppProject/assets/bin/clang-cl.exe create mode 100644 Extension/test/scenarios/SimpleCppProject/assets/bin/gcc create mode 100644 Extension/test/scenarios/SimpleCppProject/assets/bin/gcc.exe create mode 100644 Extension/test/scenarios/SimpleCppProject/tests/compilerPath.test.ts diff --git a/Extension/.gitignore b/Extension/.gitignore index 1adad30d0..1965b6766 100644 --- a/Extension/.gitignore +++ b/Extension/.gitignore @@ -10,6 +10,7 @@ server debugAdapters LLVM bin/cpptools* +bin/libc.so bin/*.dll bin/.vs bin/LICENSE.txt diff --git a/Extension/c_cpp_properties.schema.json b/Extension/c_cpp_properties.schema.json index 939cb8a34..b3ac9a6d4 100644 --- a/Extension/c_cpp_properties.schema.json +++ b/Extension/c_cpp_properties.schema.json @@ -19,8 +19,8 @@ "markdownDescription": "Full path of the compiler being used, e.g. `/usr/bin/gcc`, to enable more accurate IntelliSense.", "descriptionHint": "Markdown text between `` should not be translated or localized (they represent literal text) and the capitalization, spacing, and punctuation (including the ``) should not be altered.", "type": [ - "string", - "null" + "null", + "string" ] }, "compilerArgs": { @@ -312,4 +312,4 @@ "version" ], "additionalProperties": false -} +} \ No newline at end of file diff --git a/Extension/src/LanguageServer/configurations.ts b/Extension/src/LanguageServer/configurations.ts index 26bbd86ec..406ae4369 100644 --- a/Extension/src/LanguageServer/configurations.ts +++ b/Extension/src/LanguageServer/configurations.ts @@ -63,7 +63,7 @@ export interface ConfigurationJson { export interface Configuration { name: string; compilerPathInCppPropertiesJson?: string | null; - compilerPath?: string | null; + compilerPath?: string; // Can be set to null based on the schema, but it will be fixed in parsePropertiesFile. compilerPathIsExplicit?: boolean; compilerArgs?: string[]; compilerArgsLegacy?: string[]; @@ -982,14 +982,13 @@ export class CppProperties { } else { // However, if compileCommands are used and compilerPath is explicitly set, it's still necessary to resolve variables in it. if (configuration.compilerPath === "${default}") { - configuration.compilerPath = settings.defaultCompilerPath; - } - if (configuration.compilerPath === null) { + configuration.compilerPath = settings.defaultCompilerPath ?? undefined; configuration.compilerPathIsExplicit = true; - } else if (configuration.compilerPath !== undefined) { + } + if (configuration.compilerPath) { configuration.compilerPath = util.resolveVariables(configuration.compilerPath, env); configuration.compilerPathIsExplicit = true; - } else { + } else if (configuration.compilerPathIsExplicit === undefined) { configuration.compilerPathIsExplicit = false; } } @@ -1444,10 +1443,17 @@ export class CppProperties { } } - // Configuration.compileCommands is allowed to be defined as a string in the schema, but we send an array to the language server. - // For having a predictable behavior, we convert it here to an array of strings. + // Special sanitization of the newly parsed configuration file happens here: for (let i: number = 0; i < newJson.configurations.length; i++) { + // Configuration.compileCommands is allowed to be defined as a string in the schema, but we send an array to the language server. + // For having a predictable behavior, we convert it here to an array of strings. newJson.configurations[i].compileCommands = this.forceCompileCommandsAsArray(newJson.configurations[i].compileCommands); + + // `compilerPath` is allowed to be set to null in the schema so that empty string is not the default value (which has another meaning). + // If we detect this, we treat it as undefined. + if (newJson.configurations[i].compilerPath === null) { + delete newJson.configurations[i].compilerPath; + } } this.configurationJson = newJson; @@ -1596,92 +1602,97 @@ export class CppProperties { return result; } - private getErrorsForConfigUI(configIndex: number): ConfigurationErrors { - const errors: ConfigurationErrors = {}; - if (!this.configurationJson) { - return errors; - } - const isWindows: boolean = os.platform() === 'win32'; - const config: Configuration = this.configurationJson.configurations[configIndex]; - - // Check if config name is unique. - errors.name = this.isConfigNameUnique(config.name); - let resolvedCompilerPath: string | undefined | null; - // Validate compilerPath - if (config.compilerPath) { - resolvedCompilerPath = which.sync(config.compilerPath, { nothrow: true }); - } - + /** + * Get the compilerPath and args from a compilerPath string that has already passed through + * `this.resolvePath`. If there are errors processing the path, those will also be returned. + * + * @param resolvedCompilerPath a compilerPath string that has already been resolved. + * @param rootUri the workspace folder URI, if any. + */ + public static validateCompilerPath(resolvedCompilerPath: string, rootUri?: vscode.Uri): util.CompilerPathAndArgs { if (!resolvedCompilerPath) { - resolvedCompilerPath = this.resolvePath(config.compilerPath); + return { compilerName: '', allCompilerArgs: [], compilerArgsFromCommandLineInPath: [] }; } - const settings: CppSettings = new CppSettings(this.rootUri); - const compilerPathAndArgs: util.CompilerPathAndArgs = util.extractCompilerPathAndArgs(!!settings.legacyCompilerArgsBehavior, resolvedCompilerPath); + resolvedCompilerPath = resolvedCompilerPath.trim(); - // compilerPath + args in the same string isn't working yet. - const skipFullCommandString = !compilerPathAndArgs.compilerName && resolvedCompilerPath.includes(" "); - if (resolvedCompilerPath - && !skipFullCommandString - // Don't error cl.exe paths because it could be for an older preview build. - && compilerPathAndArgs.compilerName.toLowerCase() !== "cl.exe" - && compilerPathAndArgs.compilerName.toLowerCase() !== "cl") { - resolvedCompilerPath = resolvedCompilerPath.trim(); - - // Error when the compiler's path has spaces without quotes but args are used. - // Except, exclude cl.exe paths because it could be for an older preview build. - const compilerPathNeedsQuotes: boolean = - (compilerPathAndArgs.compilerArgsFromCommandLineInPath && compilerPathAndArgs.compilerArgsFromCommandLineInPath.length > 0) && - !resolvedCompilerPath.startsWith('"') && - compilerPathAndArgs.compilerPath !== undefined && - compilerPathAndArgs.compilerPath !== null && - compilerPathAndArgs.compilerPath.includes(" "); + const settings = new CppSettings(rootUri); + const compilerPathAndArgs = util.extractCompilerPathAndArgs(!!settings.legacyCompilerArgsBehavior, resolvedCompilerPath, undefined, rootUri?.fsPath); + const compilerLowerCase: string = compilerPathAndArgs.compilerName.toLowerCase(); + const isCl: boolean = compilerLowerCase === "cl" || compilerLowerCase === "cl.exe"; + const telemetry: { [key: string]: number } = {}; - const compilerPathErrors: string[] = []; - if (compilerPathNeedsQuotes) { - compilerPathErrors.push(localize("path.with.spaces", 'Compiler path with spaces and arguments is missing double quotes " around the path.')); - } - - // Get compiler path without arguments before checking if it exists - resolvedCompilerPath = compilerPathAndArgs.compilerPath ?? undefined; - if (resolvedCompilerPath) { - let pathExists: boolean = true; - const existsWithExeAdded: (path: string) => boolean = (path: string) => isWindows && !path.startsWith("/") && fs.existsSync(path + ".exe"); - if (!fs.existsSync(resolvedCompilerPath)) { - if (existsWithExeAdded(resolvedCompilerPath)) { - resolvedCompilerPath += ".exe"; - } else if (!this.rootUri) { - pathExists = false; - } else { - // Check again for a relative path. - const relativePath: string = this.rootUri.fsPath + path.sep + resolvedCompilerPath; - if (!fs.existsSync(relativePath)) { - if (existsWithExeAdded(resolvedCompilerPath)) { - resolvedCompilerPath += ".exe"; + // Don't error cl.exe paths because it could be for an older preview build. + if (!isCl && compilerPathAndArgs.compilerPath) { + const compilerPathMayNeedQuotes: boolean = !resolvedCompilerPath.startsWith('"') && resolvedCompilerPath.includes(" ") && compilerPathAndArgs.compilerArgsFromCommandLineInPath.length > 0; + let pathExists: boolean = true; + const existsWithExeAdded: (path: string) => boolean = (path: string) => isWindows && !path.startsWith("/") && fs.existsSync(path + ".exe"); + + resolvedCompilerPath = compilerPathAndArgs.compilerPath; + if (!fs.existsSync(resolvedCompilerPath)) { + if (existsWithExeAdded(resolvedCompilerPath)) { + resolvedCompilerPath += ".exe"; + } else { + const pathLocation = which.sync(resolvedCompilerPath, { nothrow: true }); + if (pathLocation) { + resolvedCompilerPath = pathLocation; + compilerPathAndArgs.compilerPath = pathLocation; + } else if (rootUri) { + // Test if it was a relative path. + const absolutePath: string = rootUri.fsPath + path.sep + resolvedCompilerPath; + if (!fs.existsSync(absolutePath)) { + if (existsWithExeAdded(absolutePath)) { + resolvedCompilerPath = absolutePath + ".exe"; } else { pathExists = false; } } else { - resolvedCompilerPath = relativePath; + resolvedCompilerPath = absolutePath; } } } + } - if (!pathExists) { - const message: string = localize('cannot.find', "Cannot find: {0}", resolvedCompilerPath); - compilerPathErrors.push(message); - } else if (compilerPathAndArgs.compilerPath === "") { - const message: string = localize("cannot.resolve.compiler.path", "Invalid input, cannot resolve compiler path"); - compilerPathErrors.push(message); - } else if (!util.checkExecutableWithoutExtensionExistsSync(resolvedCompilerPath)) { - const message: string = localize("path.is.not.a.file", "Path is not a file: {0}", resolvedCompilerPath); - compilerPathErrors.push(message); - } + const compilerPathErrors: string[] = []; + if (compilerPathMayNeedQuotes && !pathExists) { + compilerPathErrors.push(localize("path.with.spaces", 'Compiler path with spaces could not be found. If this was intended to include compiler arguments, surround the compiler path with double quotes (").')); + telemetry.CompilerPathMissingQuotes = 1; + } - if (compilerPathErrors.length > 0) { - errors.compilerPath = compilerPathErrors.join('\n'); - } + if (!pathExists) { + const message: string = localize('cannot.find', "Cannot find: {0}", resolvedCompilerPath); + compilerPathErrors.push(message); + telemetry.PathNonExistent = 1; + } else if (!util.checkExecutableWithoutExtensionExistsSync(resolvedCompilerPath)) { + const message: string = localize("path.is.not.a.file", "Path is not a file: {0}", resolvedCompilerPath); + compilerPathErrors.push(message); + telemetry.PathNotAFile = 1; } + + if (compilerPathErrors.length > 0) { + compilerPathAndArgs.error = compilerPathErrors.join('\n'); + } + } + compilerPathAndArgs.telemetry = telemetry; + return compilerPathAndArgs; + } + + private getErrorsForConfigUI(configIndex: number): ConfigurationErrors { + const errors: ConfigurationErrors = {}; + if (!this.configurationJson) { + return errors; + } + const isWindows: boolean = os.platform() === 'win32'; + const config: Configuration = this.configurationJson.configurations[configIndex]; + + // Check if config name is unique. + errors.name = this.isConfigNameUnique(config.name); + let resolvedCompilerPath: string | undefined | null; + // Validate compilerPath + if (!resolvedCompilerPath) { + resolvedCompilerPath = this.resolvePath(config.compilerPath, false, false); } + const compilerPathAndArgs: util.CompilerPathAndArgs = CppProperties.validateCompilerPath(resolvedCompilerPath, this.rootUri); + errors.compilerPath = compilerPathAndArgs.error; // Validate paths (directories) errors.includePath = this.validatePath(config.includePath, { globPaths: true }); @@ -1932,7 +1943,6 @@ export class CppProperties { // Check for path-related squiggles. const paths: string[] = []; - let compilerPath: string | undefined; for (const pathArray of [currentConfiguration.browse ? currentConfiguration.browse.path : undefined, currentConfiguration.includePath, currentConfiguration.macFrameworkPath]) { if (pathArray) { for (const curPath of pathArray) { @@ -1954,13 +1964,6 @@ export class CppProperties { paths.push(`${file}`); }); - if (currentConfiguration.compilerPath) { - // Unlike other cases, compilerPath may not start or end with " due to trimming of whitespace and the possibility of compiler args. - compilerPath = currentConfiguration.compilerPath; - } - - compilerPath = this.resolvePath(compilerPath).trim(); - // Get the start/end for properties that are file-only. const forcedIncludeStart: number = curText.search(/\s*\"forcedInclude\"\s*:\s*\[/); const forcedeIncludeEnd: number = forcedIncludeStart === -1 ? -1 : curText.indexOf("]", forcedIncludeStart); @@ -1977,46 +1980,20 @@ export class CppProperties { const processedPaths: Set = new Set(); // Validate compiler paths - let compilerPathNeedsQuotes: boolean = false; - let compilerMessage: string | undefined; - const compilerPathAndArgs: util.CompilerPathAndArgs = util.extractCompilerPathAndArgs(!!settings.legacyCompilerArgsBehavior, compilerPath); - const compilerLowerCase: string = compilerPathAndArgs.compilerName.toLowerCase(); - const isClCompiler: boolean = compilerLowerCase === "cl" || compilerLowerCase === "cl.exe"; - // Don't squiggle for invalid cl and cl.exe paths. - if (compilerPathAndArgs.compilerPath && !isClCompiler) { - // Squiggle when the compiler's path has spaces without quotes but args are used. - compilerPathNeedsQuotes = (compilerPathAndArgs.compilerArgsFromCommandLineInPath && compilerPathAndArgs.compilerArgsFromCommandLineInPath.length > 0) - && !compilerPath.startsWith('"') - && compilerPathAndArgs.compilerPath.includes(" "); - compilerPath = compilerPathAndArgs.compilerPath; - // Don't squiggle if compiler path is resolving with environment path. - if (compilerPathNeedsQuotes || (compilerPath && !which.sync(compilerPath, { nothrow: true }))) { - if (compilerPathNeedsQuotes) { - compilerMessage = localize("path.with.spaces", 'Compiler path with spaces and arguments is missing double quotes " around the path.'); - newSquiggleMetrics.CompilerPathMissingQuotes++; - } else if (!util.checkExecutableWithoutExtensionExistsSync(compilerPath)) { - compilerMessage = localize("path.is.not.a.file", "Path is not a file: {0}", compilerPath); - newSquiggleMetrics.PathNotAFile++; - } - } - } - let compilerPathExists: boolean = true; - if (this.rootUri && !isClCompiler) { - const checkPathExists: any = util.checkPathExistsSync(compilerPath, this.rootUri.fsPath + path.sep, isWindows, true); - compilerPathExists = checkPathExists.pathExists; - compilerPath = checkPathExists.path; - } - if (!compilerPathExists) { - compilerMessage = localize('cannot.find', "Cannot find: {0}", compilerPath); - newSquiggleMetrics.PathNonExistent++; - } - if (compilerMessage) { + const resolvedCompilerPath = this.resolvePath(currentConfiguration.compilerPath, false, false); + const compilerPathAndArgs: util.CompilerPathAndArgs = CppProperties.validateCompilerPath(resolvedCompilerPath, this.rootUri); + if (compilerPathAndArgs.error) { const diagnostic: vscode.Diagnostic = new vscode.Diagnostic( - new vscode.Range(document.positionAt(curTextStartOffset + compilerPathValueStart), - document.positionAt(curTextStartOffset + compilerPathEnd)), - compilerMessage, vscode.DiagnosticSeverity.Warning); + new vscode.Range(document.positionAt(curTextStartOffset + compilerPathValueStart), document.positionAt(curTextStartOffset + compilerPathEnd)), + compilerPathAndArgs.error, + vscode.DiagnosticSeverity.Warning); diagnostics.push(diagnostic); } + if (compilerPathAndArgs.telemetry) { + for (const o of Object.keys(compilerPathAndArgs.telemetry)) { + newSquiggleMetrics[o] = compilerPathAndArgs.telemetry[o]; + } + } // validate .config path let dotConfigPath: string | undefined; diff --git a/Extension/src/LanguageServer/cppBuildTaskProvider.ts b/Extension/src/LanguageServer/cppBuildTaskProvider.ts index 014d2316c..de08d6e43 100644 --- a/Extension/src/LanguageServer/cppBuildTaskProvider.ts +++ b/Extension/src/LanguageServer/cppBuildTaskProvider.ts @@ -98,7 +98,7 @@ export class CppBuildTaskProvider implements TaskProvider { // Get user compiler path. const userCompilerPathAndArgs: util.CompilerPathAndArgs | undefined = await activeClient.getCurrentCompilerPathAndArgs(); - let userCompilerPath: string | undefined | null; + let userCompilerPath: string | undefined; if (userCompilerPathAndArgs) { userCompilerPath = userCompilerPathAndArgs.compilerPath; if (userCompilerPath && userCompilerPathAndArgs.compilerName) { diff --git a/Extension/src/common.ts b/Extension/src/common.ts index fba6c3ac3..a48326eae 100644 --- a/Extension/src/common.ts +++ b/Extension/src/common.ts @@ -1092,74 +1092,66 @@ export function isCl(compilerPath: string): boolean { /** CompilerPathAndArgs retains original casing of text input for compiler path and args */ export interface CompilerPathAndArgs { - compilerPath?: string | null; + compilerPath?: string; compilerName: string; compilerArgs?: string[]; compilerArgsFromCommandLineInPath: string[]; allCompilerArgs: string[]; + error?: string; + telemetry?: { [key: string]: number }; } -export function extractCompilerPathAndArgs(useLegacyBehavior: boolean, inputCompilerPath?: string | null, compilerArgs?: string[]): CompilerPathAndArgs { - let compilerPath: string | undefined | null = inputCompilerPath; +/** + * Parse the compiler path input into a compiler path and compiler args. If there are no args in the input string, this function will have + * verified that the compiler exists. (e.g. `compilerArgsFromCommandLineInPath` will be empty) + * + * @param useLegacyBehavior - If true, use the legacy behavior of separating the compilerPath from the args. + * @param inputCompilerPath - The compiler path input from the user. + * @param compilerArgs - The compiler args input from the user. + * @param cwd - The directory used to resolve relative paths. + */ +export function extractCompilerPathAndArgs(useLegacyBehavior: boolean, inputCompilerPath?: string, compilerArgs?: string[], cwd?: string): CompilerPathAndArgs { + let compilerPath: string | undefined = inputCompilerPath; let compilerName: string = ""; let compilerArgsFromCommandLineInPath: string[] = []; + const trimLegacyQuotes = (compilerPath?: string): string | undefined => { + if (compilerPath && useLegacyBehavior) { + // Try to trim quotes from compiler path. + const tempCompilerPath: string[] = extractArgs(compilerPath); + if (tempCompilerPath.length > 0) { + return tempCompilerPath[0]; + } + } + return compilerPath; + }; if (compilerPath) { compilerPath = compilerPath.trim(); if (isCl(compilerPath) || checkExecutableWithoutExtensionExistsSync(compilerPath)) { // If the path ends with cl, or if a file is found at that path, accept it without further validation. compilerName = path.basename(compilerPath); + } else if (cwd && checkExecutableWithoutExtensionExistsSync(path.join(cwd, compilerPath))) { + // If the path is relative and a file is found at that path, accept it without further validation. + compilerPath = path.join(cwd, compilerPath); + compilerName = path.basename(compilerPath); } else if (compilerPath.startsWith("\"") || (os.platform() !== 'win32' && compilerPath.startsWith("'"))) { // If the string starts with a quote, treat it as a command line. // Otherwise, a path with a leading quote would not be valid. - if (useLegacyBehavior) { - compilerArgsFromCommandLineInPath = legacyExtractArgs(compilerPath); - if (compilerArgsFromCommandLineInPath.length > 0) { - compilerPath = compilerArgsFromCommandLineInPath.shift(); - if (compilerPath) { - // Try to trim quotes from compiler path. - const tempCompilerPath: string[] | undefined = extractArgs(compilerPath); - if (tempCompilerPath && compilerPath.length > 0) { - compilerPath = tempCompilerPath[0]; - } - compilerName = path.basename(compilerPath); - } - } - } else { - compilerArgsFromCommandLineInPath = extractArgs(compilerPath); - if (compilerArgsFromCommandLineInPath.length > 0) { - compilerPath = compilerArgsFromCommandLineInPath.shift(); - if (compilerPath) { - compilerName = path.basename(compilerPath); - } - } + compilerArgsFromCommandLineInPath = useLegacyBehavior ? legacyExtractArgs(compilerPath) : extractArgs(compilerPath); + if (compilerArgsFromCommandLineInPath.length > 0) { + compilerPath = trimLegacyQuotes(compilerArgsFromCommandLineInPath.shift()); + compilerName = path.basename(compilerPath ?? ''); } } else { - const spaceStart: number = compilerPath.lastIndexOf(" "); - if (spaceStart !== -1) { - // There is no leading quote, but a space suggests it might be a command line. - // Try processing it as a command line, and validate that by checking for the executable. + if (compilerPath.includes(' ')) { + // There is no leading quote, but there is a space so we'll treat it as a command line. const potentialArgs: string[] = useLegacyBehavior ? legacyExtractArgs(compilerPath) : extractArgs(compilerPath); - let potentialCompilerPath: string | undefined = potentialArgs.shift(); - if (useLegacyBehavior) { - if (potentialCompilerPath) { - const tempCompilerPath: string[] | undefined = extractArgs(potentialCompilerPath); - if (tempCompilerPath && compilerPath.length > 0) { - potentialCompilerPath = tempCompilerPath[0]; - } - } - } - if (potentialCompilerPath) { - if (isCl(potentialCompilerPath) || checkExecutableWithoutExtensionExistsSync(potentialCompilerPath)) { - compilerArgsFromCommandLineInPath = potentialArgs; - compilerPath = potentialCompilerPath; - compilerName = path.basename(compilerPath); - } - } + compilerPath = trimLegacyQuotes(potentialArgs.shift()); + compilerArgsFromCommandLineInPath = potentialArgs; } + compilerName = path.basename(compilerPath ?? ''); } } - let allCompilerArgs: string[] = !compilerArgs ? [] : compilerArgs; - allCompilerArgs = allCompilerArgs.concat(compilerArgsFromCommandLineInPath); + const allCompilerArgs: string[] = (compilerArgs ?? []).concat(compilerArgsFromCommandLineInPath); return { compilerPath, compilerName, compilerArgs, compilerArgsFromCommandLineInPath, allCompilerArgs }; } diff --git a/Extension/test/scenarios/SimpleCppProject/assets/b i n/clang++ b/Extension/test/scenarios/SimpleCppProject/assets/b i n/clang++ new file mode 100644 index 000000000..e69de29bb diff --git a/Extension/test/scenarios/SimpleCppProject/assets/b i n/clang++.exe b/Extension/test/scenarios/SimpleCppProject/assets/b i n/clang++.exe new file mode 100644 index 000000000..e69de29bb diff --git a/Extension/test/scenarios/SimpleCppProject/assets/bin/cl.exe b/Extension/test/scenarios/SimpleCppProject/assets/bin/cl.exe new file mode 100644 index 000000000..e69de29bb diff --git a/Extension/test/scenarios/SimpleCppProject/assets/bin/clang-cl.exe b/Extension/test/scenarios/SimpleCppProject/assets/bin/clang-cl.exe new file mode 100644 index 000000000..e69de29bb diff --git a/Extension/test/scenarios/SimpleCppProject/assets/bin/gcc b/Extension/test/scenarios/SimpleCppProject/assets/bin/gcc new file mode 100644 index 000000000..e69de29bb diff --git a/Extension/test/scenarios/SimpleCppProject/assets/bin/gcc.exe b/Extension/test/scenarios/SimpleCppProject/assets/bin/gcc.exe new file mode 100644 index 000000000..e69de29bb diff --git a/Extension/test/scenarios/SimpleCppProject/tests/compilerPath.test.ts b/Extension/test/scenarios/SimpleCppProject/tests/compilerPath.test.ts new file mode 100644 index 000000000..c4ee7a633 --- /dev/null +++ b/Extension/test/scenarios/SimpleCppProject/tests/compilerPath.test.ts @@ -0,0 +1,272 @@ +/* -------------------------------------------------------------------------------------------- + * Copyright (c) Microsoft Corporation. All Rights Reserved. + * See 'LICENSE' in the project root for license information. + * ------------------------------------------------------------------------------------------ */ + +import { describe, it } from 'mocha'; +import { deepEqual, equal, ok } from 'node:assert'; +import * as path from 'path'; +import { Uri } from 'vscode'; +import { extractCompilerPathAndArgs } from '../../../../src/common'; +import { isWindows } from '../../../../src/constants'; +import { CppProperties } from '../../../../src/LanguageServer/configurations'; + +const assetsFolder = Uri.file(path.normalize(path.join(__dirname.replace(/dist[\/\\]/, ''), '..', 'assets'))); +const assetsFolderFsPath = assetsFolder.fsPath; + +// A simple test counter for the tests that loop over several cases. +// This is to make it easier to see which test failed in the output. +// Start the counter with 1 instead of 0 since we're reporting on test cases, not arrays. +class Counter { + private count: number = 1; + public next(): void { + this.count++; + } + public get str(): string { + return `(test ${this.count})`; + } +} + +if (isWindows) { + describe('extractCompilerPathAndArgs', () => { + // [compilerPath, useLegacyBehavior, additionalArgs, result.compilerName, result.allCompilerArgs] + const nonArgsTests: [string, boolean, string[] | undefined, string, string[]][] = [ + ['cl', false, undefined, 'cl', []], + ['cl.exe', false, undefined, 'cl.exe', []], + [path.join(assetsFolderFsPath, 'bin', 'cl.exe'), false, undefined, 'cl.exe', []], + [path.join(assetsFolderFsPath, 'bin', 'gcc.exe'), false, undefined, 'gcc.exe', []], + [path.join(assetsFolderFsPath, 'b i n', 'clang++.exe'), false, undefined, 'clang++.exe', []], + [path.join(assetsFolderFsPath, 'b i n', 'clang++'), false, undefined, 'clang++', []], + [path.join('bin', 'gcc.exe'), false, undefined, 'gcc.exe', []], + [path.join('bin', 'gcc'), false, undefined, 'gcc', []] + ]; + it('Verify various compilerPath strings without args', () => { + const c = new Counter(); + nonArgsTests.forEach(test => { + const result = extractCompilerPathAndArgs(test[1], test[0], test[2], assetsFolderFsPath); + ok(result.compilerPath?.endsWith(test[0]), `${c.str} compilerPath should end with ${test[0]}`); + equal(result.compilerName, test[3], `${c.str} compilerName should match`); + deepEqual(result.compilerArgs, test[2], `${c.str} compilerArgs should match`); + deepEqual(result.compilerArgsFromCommandLineInPath, [], `${c.str} compilerArgsFromCommandLineInPath should be empty`); + deepEqual(result.allCompilerArgs, test[4], `${c.str} allCompilerArgs should match`); + + // errors and telemetry are set by validateCompilerPath + equal(result.error, undefined, `${c.str} error should be undefined`); + equal(result.telemetry, undefined, `${c.str} telemetry should be undefined`); + c.next(); + }); + }); + + const argsTests: [string, boolean, string[] | undefined, string, string[]][] = [ + ['cl.exe /c /Fo"test.obj" test.cpp', false, undefined, 'cl.exe', ['/c', '/Fotest.obj', 'test.cpp']], // extra quotes missing, but not needed. + ['cl.exe /c /Fo"test.obj" test.cpp', true, undefined, 'cl.exe', ['/c', '/Fo"test.obj"', 'test.cpp']], + ['cl.exe /c /Fo"test.obj" test.cpp', false, ['/O2'], 'cl.exe', ['/O2', '/c', '/Fotest.obj', 'test.cpp']], + ['cl.exe /c /Fo"test.obj" test.cpp', true, ['/O2'], 'cl.exe', ['/O2', '/c', '/Fo"test.obj"', 'test.cpp']], + [`"${path.join(assetsFolderFsPath, 'b i n', 'clang++.exe')}" -std=c++20`, false, undefined, 'clang++.exe', ['-std=c++20']], + [`"${path.join(assetsFolderFsPath, 'b i n', 'clang++.exe')}" -std=c++20`, true, undefined, 'clang++.exe', ['-std=c++20']], + [`"${path.join(assetsFolderFsPath, 'b i n', 'clang++.exe')}" -std=c++20`, false, ['-O2'], 'clang++.exe', ['-O2', '-std=c++20']], + [`"${path.join(assetsFolderFsPath, 'b i n', 'clang++.exe')}" -std=c++20`, true, ['-O2'], 'clang++.exe', ['-O2', '-std=c++20']], + [`${path.join('bin', 'gcc.exe')} -O2`, false, undefined, 'gcc.exe', ['-O2']], + [`${path.join('bin', 'gcc.exe')} -O2`, true, undefined, 'gcc.exe', ['-O2']] + ]; + it('Verify various compilerPath strings with args', () => { + const c = new Counter(); + argsTests.forEach(test => { + const result = extractCompilerPathAndArgs(test[1], test[0], test[2]); + const cp = test[0].substring(test[0].at(0) === '"' ? 1 : 0, test[0].indexOf(test[3]) + test[3].length); + ok(result.compilerPath?.endsWith(cp), `${c.str} ${result.compilerPath} !endswith ${cp}`); + equal(result.compilerName, test[3], `${c.str} compilerName should match`); + deepEqual(result.compilerArgs, test[2], `${c.str} compilerArgs should match`); + deepEqual(result.compilerArgsFromCommandLineInPath, test[4].filter(a => !test[2]?.includes(a)), `${c.str} compilerArgsFromCommandLineInPath should match those from the command line`); + deepEqual(result.allCompilerArgs, test[4], `${c.str} allCompilerArgs should match`); + + // errors and telemetry are set by validateCompilerPath + equal(result.error, undefined, `${c.str} error should be undefined`); + equal(result.telemetry, undefined, `${c.str} telemetry should be undefined`); + c.next(); + }); + }); + + const negativeTests: [string, boolean, string[] | undefined, string, string[]][] = [ + [`${path.join(assetsFolderFsPath, 'b i n', 'clang++.exe')} -std=c++20`, false, undefined, 'b', ['i', 'n\\clang++.exe', '-std=c++20']] + ]; + it('Verify various compilerPath strings with args that should fail', () => { + const c = new Counter(); + negativeTests.forEach(test => { + const result = extractCompilerPathAndArgs(test[1], test[0], test[2]); + ok(result.compilerPath?.endsWith(test[3]), `${c.str} ${result.compilerPath} !endswith ${test[3]}`); + equal(result.compilerName, test[3], `${c.str} compilerName should match`); + deepEqual(result.compilerArgs, test[2], `${c.str} compilerArgs should match`); + deepEqual(result.compilerArgsFromCommandLineInPath, test[4], `${c.str} allCompilerArgs should match`); + deepEqual(result.allCompilerArgs, test[4], `${c.str} allCompilerArgs should match`); + + // errors and telemetry are set by validateCompilerPath + equal(result.error, undefined, `${c.str} error should be undefined`); + equal(result.telemetry, undefined, `${c.str} telemetry should be undefined`); + c.next(); + }); + }); + }); +} else { + describe('extractCompilerPathAndArgs', () => { + // [compilerPath, useLegacyBehavior, additionalArgs, result.compilerName, result.allCompilerArgs] + const tests: [string, boolean, string[] | undefined, string, string[]][] = [ + ['clang', false, undefined, 'clang', []], + [path.join(assetsFolderFsPath, 'bin', 'gcc'), false, undefined, 'gcc', []], + [path.join(assetsFolderFsPath, 'b i n', 'clang++'), false, undefined, 'clang++', []], + [path.join('bin', 'gcc'), false, undefined, 'gcc', []] + ]; + it('Verify various compilerPath strings without args', () => { + const c = new Counter(); + tests.forEach(test => { + const result = extractCompilerPathAndArgs(test[1], test[0], test[2]); + equal(result.compilerName, test[3], `${c.str} compilerName should match`); + deepEqual(result.allCompilerArgs, test[4], `${c.str} allCompilerArgs should match`); + equal(result.error, undefined, `${c.str} error should be undefined`); + equal(result.telemetry, undefined, `${c.str} telemetry should be undefined`); + c.next(); + }); + }); + + const argsTests: [string, boolean, string[] | undefined, string, string[]][] = [ + ['clang -O2 -Wall', false, undefined, 'clang', ['-O2', '-Wall']], + ['clang -O2 -Wall', true, undefined, 'clang', ['-O2', '-Wall']], + ['clang -O2 -Wall', false, ['-O3'], 'clang', ['-O3', '-O2', '-Wall']], + ['clang -O2 -Wall', true, ['-O3'], 'clang', ['-O3', '-O2', '-Wall']], + [`"${path.join(assetsFolderFsPath, 'b i n', 'clang++')}" -std=c++20`, false, undefined, 'clang++', ['-std=c++20']], + [`"${path.join(assetsFolderFsPath, 'b i n', 'clang++')}" -std=c++20`, true, undefined, 'clang++', ['-std=c++20']], + [`"${path.join(assetsFolderFsPath, 'b i n', 'clang++')}" -std=c++20`, false, ['-O2'], 'clang++', ['-O2', '-std=c++20']], + [`"${path.join(assetsFolderFsPath, 'b i n', 'clang++')}" -std=c++20`, true, ['-O2'], 'clang++', ['-O2', '-std=c++20']], + [`${path.join('bin', 'gcc')} -O2`, false, undefined, 'gcc', ['-O2']], + [`${path.join('bin', 'gcc')} -O2`, true, undefined, 'gcc', ['-O2']] + ]; + it('Verify various compilerPath strings with args', () => { + const c = new Counter(); + argsTests.forEach(test => { + const result = extractCompilerPathAndArgs(test[1], test[0], test[2]); + equal(result.compilerName, test[3], `${c.str} compilerName should match`); + deepEqual(result.allCompilerArgs, test[4], `${c.str} allCompilerArgs should match`); + equal(result.error, undefined, `${c.str} error should be undefined`); + equal(result.telemetry, undefined, `${c.str} telemetry should be undefined`); + c.next(); + }); + }); + + const negativeTests: [string, boolean, string[] | undefined, string, string[]][] = [ + [`${path.join(assetsFolderFsPath, 'b i n', 'clang++')} -std=c++20`, false, undefined, 'b', ['i', 'n/clang++', '-std=c++20']] + ]; + it('Verify various compilerPath strings with args that should fail', () => { + const c = new Counter(); + negativeTests.forEach(test => { + const result = extractCompilerPathAndArgs(test[1], test[0], test[2]); + equal(result.compilerName, test[3], `${c.str} compilerName should match`); + deepEqual(result.allCompilerArgs, test[4], `${c.str} allCompilerArgs should match`); + + // errors and telemetry are set by validateCompilerPath + equal(result.error, undefined, `${c.str} error should be undefined`); + equal(result.telemetry, undefined, `${c.str} telemetry should be undefined`); + c.next(); + }); + }); + }); +} + +describe('validateCompilerPath', () => { + // [compilerPath, cwd, result.compilerName, result.allCompilerArgs, result.error, result.telemetry] + const tests: [string, Uri, string, string[]][] = [ + ['cl.exe', assetsFolder, 'cl.exe', []], + ['cl', assetsFolder, 'cl', []], + ['clang', assetsFolder, 'clang', []], + [path.join(assetsFolderFsPath, 'bin', 'cl'), assetsFolder, 'cl', []], + [path.join(assetsFolderFsPath, 'bin', 'clang-cl'), assetsFolder, 'clang-cl', []], + [path.join(assetsFolderFsPath, 'bin', 'gcc'), assetsFolder, 'gcc', []], + [path.join(assetsFolderFsPath, 'b i n', 'clang++'), assetsFolder, 'clang++', []], + [path.join('bin', 'gcc'), assetsFolder, 'gcc', []], + [path.join('bin', 'clang-cl'), assetsFolder, 'clang-cl', []], + ['', assetsFolder, '', []], + [' cl.exe ', assetsFolder, 'cl.exe', []] + ]; + it('Verify various compilerPath strings without args', () => { + const c = new Counter(); + tests.forEach(test => { + // Skip the clang-cl test on non-Windows. That test is for checking the addition of .exe to the compiler name on Windows only. + if (isWindows || !test[0].includes('clang-cl')) { + const result = CppProperties.validateCompilerPath(test[0], test[1]); + equal(result.compilerName, test[2], `${c.str} compilerName should match`); + deepEqual(result.allCompilerArgs, test[3], `${c.str} allCompilerArgs should match`); + equal(result.error, undefined, `${c.str} error should be undefined`); + deepEqual(result.telemetry, test[0] === '' ? undefined : {}, `${c.str} telemetry should be empty`); + } + c.next(); + }); + }); + + const argsTests: [string, Uri, string, string[]][] = [ + ['cl.exe /std:c++20 /O2', assetsFolder, 'cl.exe', ['/std:c++20', '/O2']], // issue with /Fo"test.obj" argument + [`"${path.join(assetsFolderFsPath, 'b i n', 'clang++')}" -std=c++20 -O2`, assetsFolder, 'clang++', ['-std=c++20', '-O2']], + [`${path.join('bin', 'gcc')} -std=c++20 -Wall`, assetsFolder, 'gcc', ['-std=c++20', '-Wall']], + ['clang -O2 -Wall', assetsFolder, 'clang', ['-O2', '-Wall']] + ]; + it('Verify various compilerPath strings with args', () => { + const c = new Counter(); + argsTests.forEach(test => { + const result = CppProperties.validateCompilerPath(test[0], test[1]); + equal(result.compilerName, test[2], `${c.str} compilerName should match`); + deepEqual(result.allCompilerArgs, test[3], `${c.str} allCompilerArgs should match`); + equal(result.error, undefined, `${c.str} error should be undefined`); + deepEqual(result.telemetry, {}, `${c.str} telemetry should be empty`); + c.next(); + }); + }); + + it('Verify errors with invalid relative compiler path', async () => { + const result = CppProperties.validateCompilerPath(path.join('assets', 'bin', 'gcc'), assetsFolder); + equal(result.compilerName, 'gcc', 'compilerName should be found'); + equal(result.allCompilerArgs.length, 0, 'Should not have any args'); + ok(result.error?.includes('Cannot find'), 'Should have an error for relative paths'); + equal(result.telemetry?.PathNonExistent, 1, 'Should have telemetry for relative paths'); + equal(result.telemetry?.PathNotAFile, undefined, 'Should not have telemetry for invalid paths'); + equal(result.telemetry?.CompilerPathMissingQuotes, undefined, 'Should not have telemetry for missing quotes'); + }); + + it('Verify errors with invalid absolute compiler path', async () => { + const result = CppProperties.validateCompilerPath(path.join(assetsFolderFsPath, 'assets', 'bin', 'gcc'), assetsFolder); + equal(result.compilerName, 'gcc', 'compilerName should be found'); + equal(result.allCompilerArgs.length, 0, 'Should not have any args'); + ok(result.error?.includes('Cannot find'), 'Should have an error for absolute paths'); + equal(result.telemetry?.PathNonExistent, 1, 'Should have telemetry for absolute paths'); + equal(result.telemetry?.PathNotAFile, undefined, 'Should not have telemetry for invalid paths'); + equal(result.telemetry?.CompilerPathMissingQuotes, undefined, 'Should not have telemetry for missing quotes'); + }); + + it('Verify errors with non-file compilerPath', async () => { + const result = CppProperties.validateCompilerPath('bin', assetsFolder); + equal(result.compilerName, 'bin', 'compilerName should be found'); + equal(result.allCompilerArgs.length, 0, 'Should not have any args'); + ok(result.error?.includes('Path is not a file'), 'Should have an error for non-file paths'); + equal(result.telemetry?.PathNonExistent, undefined, 'Should not have telemetry for relative paths'); + equal(result.telemetry?.PathNotAFile, 1, 'Should have telemetry for invalid paths'); + equal(result.telemetry?.CompilerPathMissingQuotes, undefined, 'Should not have telemetry for missing quotes'); + }); + + it('Verify errors with unknown compiler not in Path', async () => { + const result = CppProperties.validateCompilerPath('icc', assetsFolder); + equal(result.compilerName, 'icc', 'compilerName should be found'); + equal(result.allCompilerArgs.length, 0, 'Should not have any args'); + equal(result.telemetry?.PathNonExistent, 1, 'Should have telemetry for relative paths'); + equal(result.telemetry?.PathNotAFile, undefined, 'Should not have telemetry for invalid paths'); + equal(result.telemetry?.CompilerPathMissingQuotes, undefined, 'Should not have telemetry for missing quotes'); + }); + + it('Verify errors with unknown compiler not in Path with args', async () => { + const result = CppProperties.validateCompilerPath('icc -O2', assetsFolder); + equal(result.compilerName, 'icc', 'compilerName should be found'); + deepEqual(result.allCompilerArgs, ['-O2'], 'args should match'); + ok(result.error?.includes('Cannot find'), 'Should have an error for unknown compiler'); + ok(result.error?.includes('surround the compiler path with double quotes'), 'Should have an error for missing double quotes'); + equal(result.telemetry?.PathNonExistent, 1, 'Should have telemetry for relative paths'); + equal(result.telemetry?.PathNotAFile, undefined, 'Should not have telemetry for invalid paths'); + equal(result.telemetry?.CompilerPathMissingQuotes, 1, 'Should have telemetry for missing quotes'); + }); + +}); From f461208ffca9862dd8bd6cbae9a4837eab50fed7 Mon Sep 17 00:00:00 2001 From: Ben McMorran Date: Thu, 1 May 2025 16:42:57 -0700 Subject: [PATCH 23/25] Ensure #cpp tool isn't accidentally enabled in agent mode (#13581) --- Extension/package.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Extension/package.json b/Extension/package.json index 559028bec..4575468c1 100644 --- a/Extension/package.json +++ b/Extension/package.json @@ -6549,7 +6549,7 @@ "userDescription": "%c_cpp.languageModelTools.configuration.userDescription%", "modelDescription": "For the active C or C++ file, this tool provides: the language (C, C++, or CUDA), the language standard version (such as C++11, C++14, C++17, or C++20), the compiler (such as GCC, Clang, or MSVC), the target platform (such as x86, x64, or ARM), and the target architecture (such as 32-bit or 64-bit).", "icon": "$(file-code)", - "when": "(config.C_Cpp.experimentalFeatures =~ /^[eE]nabled$/)" + "when": "(config.C_Cpp.experimental.configuration_lmtool =~ /^[eE]nabled$/)" } ] }, @@ -6651,4 +6651,4 @@ "postcss": "^8.4.31", "gulp-typescript/**/glob-parent": "^5.1.2" } -} \ No newline at end of file +} From ec85902bd41b58c90dfa44a04722e781d3045ac6 Mon Sep 17 00:00:00 2001 From: Glen Chung <105310954+kuchungmsft@users.noreply.github.com> Date: Fri, 2 May 2025 14:32:24 -0700 Subject: [PATCH 24/25] Publish Idle Status (#13583) For synchronizing tests --- Extension/package.json | 2 +- Extension/src/LanguageServer/client.ts | 3 ++- Extension/yarn.lock | 8 ++++---- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/Extension/package.json b/Extension/package.json index 4575468c1..ea4fef448 100644 --- a/Extension/package.json +++ b/Extension/package.json @@ -6641,7 +6641,7 @@ "shell-quote": "^1.8.1", "ssh-config": "^4.4.4", "tmp": "^0.2.3", - "vscode-cpptools": "^6.1.0", + "vscode-cpptools": "^6.2.0", "vscode-languageclient": "^8.1.0", "vscode-nls": "^5.2.0", "vscode-tas-client": "^0.1.84", diff --git a/Extension/src/LanguageServer/client.ts b/Extension/src/LanguageServer/client.ts index 44b537d1e..fdd0eb737 100644 --- a/Extension/src/LanguageServer/client.ts +++ b/Extension/src/LanguageServer/client.ts @@ -2742,7 +2742,8 @@ export class DefaultClient implements Client { util.setProgress(util.getProgressExecutableSuccess()); const testHook: TestHook = getTestHook(); if (message.endsWith("Idle")) { - // nothing to do + const status: IntelliSenseStatus = { status: Status.Idle }; + testHook.updateStatus(status); } else if (message.endsWith("Parsing")) { this.model.isParsingWorkspace.Value = true; this.model.isInitializingWorkspace.Value = false; diff --git a/Extension/yarn.lock b/Extension/yarn.lock index c35c50027..1145eba8f 100644 --- a/Extension/yarn.lock +++ b/Extension/yarn.lock @@ -5079,10 +5079,10 @@ vinyl@^3.0.0: replace-ext "^2.0.0" teex "^1.0.1" -vscode-cpptools@^6.1.0: - version "6.1.0" - resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/vscode-cpptools/-/vscode-cpptools-6.1.0.tgz#d89bb225f91da45dbee6acbf45f6940aa3926df1" - integrity sha1-2JuyJfkdpF2+5qy/RfaUCqOSbfE= +vscode-cpptools@^6.2.0: + version "6.2.0" + resolved "https://pkgs.dev.azure.com/azure-public/VisualCpp/_packaging/cpp_PublicPackages/npm/registry/vscode-cpptools/-/vscode-cpptools-6.2.0.tgz#f5ce714fea83b00a9d01e880110ec53fbdbe4664" + integrity sha1-9c5xT+qDsAqdAeiAEQ7FP72+RmQ= vscode-jsonrpc@8.1.0: version "8.1.0" From 7e013ab0da5455f6f3734fe7b5a5d2bd4a5a3595 Mon Sep 17 00:00:00 2001 From: Sean McManus Date: Sun, 4 May 2025 12:50:37 -0700 Subject: [PATCH 25/25] IntelliSense string updates. (#13580) * IntelliSense string updates. --- Extension/bin/messages/cs/messages.json | 93 ++++++++++++++-------- Extension/bin/messages/de/messages.json | 93 ++++++++++++++-------- Extension/bin/messages/es/messages.json | 93 ++++++++++++++-------- Extension/bin/messages/fr/messages.json | 93 ++++++++++++++-------- Extension/bin/messages/it/messages.json | 93 ++++++++++++++-------- Extension/bin/messages/ja/messages.json | 93 ++++++++++++++-------- Extension/bin/messages/ko/messages.json | 93 ++++++++++++++-------- Extension/bin/messages/pl/messages.json | 93 ++++++++++++++-------- Extension/bin/messages/pt-br/messages.json | 93 ++++++++++++++-------- Extension/bin/messages/ru/messages.json | 93 ++++++++++++++-------- Extension/bin/messages/tr/messages.json | 93 ++++++++++++++-------- Extension/bin/messages/zh-cn/messages.json | 93 ++++++++++++++-------- Extension/bin/messages/zh-tw/messages.json | 93 ++++++++++++++-------- 13 files changed, 780 insertions(+), 429 deletions(-) diff --git a/Extension/bin/messages/cs/messages.json b/Extension/bin/messages/cs/messages.json index c9e8d11f3..1aa6a65d8 100644 --- a/Extension/bin/messages/cs/messages.json +++ b/Extension/bin/messages/cs/messages.json @@ -163,7 +163,7 @@ "Nerozpoznaná direktiva #pragma", null, "Nepodařilo se otevřít dočasný soubor %sq: %s2", - "Název adresáře dočasných souborů je moc dlouhý (%sq).", + null, "příliš málo argumentů ve volání funkce", "neplatná plovoucí konstanta", "Argument typu %t1 je nekompatibilní s parametrem typu %t2.", @@ -1828,7 +1828,7 @@ "Funkce auto vyžaduje ukončovací návratový typ.", "Šablona člena nemůže mít specifikátor pure.", "Řetězcový literál je příliš dlouhý – nadpočetné znaky se ignorují.", - "Možnost řízení klíčového slova nullptr se dá použít jenom při kompilaci C++.", + null, "Došlo k převodu std::nullptr_t na bool.", null, null, @@ -3230,8 +3230,8 @@ "druhá shoda je %t", "Atribut availability, který se tady používá, se ignoruje.", "Výraz inicializátoru podle C++20 v příkazu for založeném na rozsahu není v tomto režimu standardní.", - "co_await se může vztahovat jen na příkaz for založený na rozsahu.", - "Typ rozsahu ve smyčce for založené na rozsahu se nedá vyvodit.", + "co_await can only apply to a range-based \"for\" statement", + "cannot deduce type of range in range-based \"for\" statement", "Vložené proměnné jsou funkce standardu C++17.", "Destrukční operátor delete vyžaduje jako první parametr %t.", "Destrukční operátor delete nemůže mít parametry jiné než std::size_t a std::align_val_t.", @@ -3272,17 +3272,17 @@ "%sq není importovatelné záhlaví.", "Nelze importovat modul bez názvu.", "Modul nemůže mít závislost rozhraní sám na sebe.", - "Modul %sq je už importovaný.", + "%m has already been imported", "Soubor modulu", "Nepodařilo se najít soubor modulu pro modul %sq.", "Soubor modulu %sq se nepovedlo naimportovat.", - "Očekávalo se %s1, ale našlo se %s2.", + null, "Při otevírání souboru modulu %sq", "Neznámý název oddílu %sq", - "neznámý soubor modulu", - "soubor modulu s importovatelnou hlavičkou", - "soubor modulu EDG", - "soubor modulu IFC", + null, + null, + null, + null, "neočekávaný soubor modulu", "Typ druhého operandu %t2 musí mít stejnou velikost jako %t1.", "Typ musí být možné triviálně kopírovat.", @@ -3347,7 +3347,7 @@ "nejde najít záhlaví %s, které se má importovat", "více než jeden soubor v seznamu souborů modulu odpovídá %s", "soubor modulu, který se našel pro %s, je pro jiný modul", - "libovolný druh souboru modulu", + null, "nejde přečíst soubor modulu", "předdefinovaná funkce není k dispozici, protože typ char8_t se nepodporuje s aktuálními možnostmi", null, @@ -3368,7 +3368,7 @@ "Nepovedlo se interpretovat rozložení bitů pro tento cíl kompilace.", "Žádný odpovídající operátor pro operátor IFC %sq", "Žádná odpovídající konvence volání pro konvenci volání IFC %sq", - "Modul %sq obsahuje nepodporované konstrukce.", + "%m contains unsupported constructs", "Nepodporovaná konstrukce IFC: %sq", "__is_signed už není klíčové slovo.", "Rozměr pole musí mít konstantní celočíselnou hodnotu bez znaménka.", @@ -3417,35 +3417,35 @@ "Příkazy if consteval a if not consteval nejsou v tomto režimu standardní.", "Vynechání () v deklarátoru výrazu lambda je v tomto režimu nestandardní.", "Když se vynechá seznam parametrů výrazu lambda, nepodporuje se klauzule requires na konci.", - "Požádalo se o neplatný oddíl modulu %sq.", - "Požádalo se nedefinovaný oddíl modulu %sq1 (předpokládalo se, že je to %sq2).", + "%m invalid partition requested", + "%m undefined partition (believed to be %sq) requested", null, null, - "Modul %sq1 pozice souboru %u1 (relativní pozice %u2) požadovaná pro oddíl %sq2, který přetéká konec svého oddílu", - "Modul %sq1 pozice souboru %u1 (relativní pozice %u2) požadována pro oddíl %sq2, který je nesprávně zarovnán s elementy oddílů", + "%m file position %u1 (relative position %u2) requested for partition %sq - which overflows the end of its partition", + "%m file position %u1 (relative position %u2) requested for partition %sq - which is misaligned with its partitions elements", "z dílčího pole %sq (relativní pozice k uzlu %u)", "Z oddílu %sq elementu %u1 (pozice souboru %u2, relativní pozice %u3)", "Atributy výrazů lambda jsou funkcí C++23.", "Identifikátor %sq by bylo možné zaměnit za vizuálně podobné %p.", "Tento komentář obsahuje podezřelé řídicí znaky formátování Unicode.", "Tento řetězec obsahuje řídicí znaky formátování Unicode. To může způsobit neočekávané chování modulu runtime.", - "Došlo k potlačení %d1 upozornění při zpracovávání modulu %sq1.", - "Došlo k potlačení %d1 upozornění při zpracovávání modulu %sq1.", - "Došlo k potlačení %d1 chyby při zpracovávání modulu %sq1.", - "Došlo k potlačení %d1 chyb při zpracovávání modulu %sq1.", + "%u suppressed warning was encountered while processing %m", + "%u suppressed warnings were encountered while processing %m", + "%u suppressed error was encountered while processing %m", + "%u suppressed errors were encountered while processing %m", "včetně", "potlačeno", "Virtuální členská funkce nemůže mít explicitní parametr this.", "Převzetí adresy funkce s explicitním this vyžaduje kvalifikovaný název.", "Vytvoření adresy funkce s explicitním this vyžaduje operátor &.", "řetězcový literál nelze použít k inicializaci člena flexibilního pole.", - "Reprezentace IFC definice funkce %sq je neplatná.", + "the IFC representation of the definition of function %sq is invalid", null, "graf UniLevel IFC se nepoužil k zadání parametrů.", "V grafu definice parametrů IFC byl zadán tento počet parametrů: %u1, zatímco deklarace IFC určovala tento počet parametrů: %u2.", "V grafu definice parametrů IFC byly zadány %u1 parametry, zatímco deklarace IFC určovala tento počet parametrů: %u2.", "V grafu definice parametrů IFC byly zadány %u1 parametry, zatímco deklarace IFC určovala tento počet parametrů: %u2.", - "Chybí reprezentace IFC definice funkce %sq.", + "the IFC representation of the definition of function %sq is missing", "modifikátor funkce se nevztahuje na deklaraci členské šablony.", "výběr člena zahrnuje příliš mnoho vnořených anonymních typů", "mezi operandy není žádný společný typ", @@ -3467,7 +3467,7 @@ "bitové pole s nekompletním typem výčtu nebo neprůhledný výčet s neplatným základním typem", "došlo k pokusu o vytvoření elementu z oddílu IFC %sq pomocí indexu do oddílu IFC %sq2.", "oddíl %sq určil svou velikost položky jako %u1, když bylo očekáváno %u2.", - "při zpracování modulu %sq1 byl zjištěn neočekávaný požadavek IFC.", + "an unexpected IFC requirement was encountered while processing %m", "podmínka selhala na řádku %d v %s1: %sq2", "atomické omezení závisí na sobě", "Funkce noreturn má návratový typ, který není void.", @@ -3475,9 +3475,9 @@ "výchozí argument šablony nelze zadat pro definici členské šablony mimo její třídu.", "při rekonstrukci entity se zjistil neplatný název identifikátoru IFC %sq.", null, - "neplatná hodnota řazení modulu %sq", + "%m invalid sort value", "šablona funkce načtená z modulu IFC byla nesprávně parsována jako %nd.", - "nepovedlo se načíst odkaz na entitu IFC v modulu %sq.", + "failed to load an IFC entity reference in %m", "Z oddílu %sq elementu %u1 (pozice souboru %u2, relativní pozice %u3)", "zřetězené specifikátory nejsou povolené pro typ třídy s netriviálním destruktorem.", "Explicitní deklarace specializace nemůže být deklarací typu friend.", @@ -3506,9 +3506,9 @@ null, "nejde vyhodnotit inicializátor pro člena flexibilního pole", "výchozí inicializátor bitového pole je funkce C++20", - "příliš mnoho argumentů v seznamu argumentů šablony v modulu %sq", + "too many arguments in template argument list in %m", "zjištěno pro argument šablony reprezentovaný %sq elementem %u1 (pozice souboru %u2, relativní pozice %u3)", - "příliš málo argumentů v seznamu argumentů šablony v modulu %sq", + "too few arguments in template argument list in %m", "zjištěno při zpracování seznamu argumentů šablony reprezentovaného %sq elementem %u1 (pozice souboru %u2, relativní pozice %u3)", "převod z vymezeného výčtového typu %t je nestandardní", "zrušení přidělení se neshoduje s druhem přidělení (jedno je pro pole a druhé ne)", @@ -3517,8 +3517,8 @@ "__make_unsigned je kompatibilní jenom s typem integer a výčtovým typem, které nejsou typu bool", "vnitřní název %sq bude odsud považován za běžný identifikátor", "přístup k neinicializovanému podobjektu v indexu %d", - "Číslo řádku IFC (%u1) přetéká maximální povolenou hodnotu (%u2), modul %sq.", - "Modul %sq1 požadoval element %u oddílu %sq2. Tato pozice souboru překračuje maximální reprezentovatelnou hodnotu.", + "IFC line number (%u1) overflows maximum allowed value (%u2) %m", + "%m requested element %u of partition %sq, this file position exceeds the maximum representable value", "nesprávný počet argumentů", "Omezení kandidáta %n není splněno.", "Počet parametrů %n neodpovídá volání.", @@ -3551,7 +3551,7 @@ "Soubor IFC %sq nejde zpracovat.", "Verze IFC %u1.%u2 není podporována.", "Architektura IFC %sq není kompatibilní s aktuální cílovou architekturou.", - "Modul %sq1 požaduje index %u nepodporovaného oddílu odpovídajícího %sq2.", + "%m requests index %u of an unsupported partition corresponding to %sq", "Číslo parametru %d z %n má typ %t, který nelze dokončit.", "Číslo parametru %d z %n má neúplný typ %t.", "Číslo parametru %d z %n má abstraktní typ %t.", @@ -3570,7 +3570,7 @@ "chybná reflexe (%r) pro spojení výrazů", "%n již byl definován (předchozí definice %p)", "objekt infovec není inicializovaný", - "value_of typ %t1 není kompatibilní s danou reflexí (entita s typem %t2)", + "extract of type %t1 is not compatible with the given reflection (entity with type %t2)", "reflektování sady přetížení není v tuto chvíli povolené", "tato vnitřní funkce vyžaduje reflexi pro instanci šablony", "nekompatibilní typy %t1 a %t2 pro operátora", @@ -3601,6 +3601,21 @@ "pro aktuální jednotku překladu se nepovedlo vytvořit jednotku hlavičky", "aktuální jednotka překladu používá jednu nebo více funkcí, které se v tuto chvíli nedají zapsat do jednotky hlavičky", "explicit(bool) je funkcí C++20", + "first argument must be a pointer to integer, enum, or supported floating-point type", + "C++ modules cannot be used when compiling multiple translation units", + "C++ modules cannot be used with the pre-C++11 \"export\" feature", + "the IFC token %sq is not supported", + "the \"pass_object_size\" attribute is only valid on parameters of function declarations", + "the argument of the %sq attribute %d1 must be a value between 0 and %d2", + "a ref-qualifier here is ignored", + "invalid NEON vector element type %t", + "invalid NEON polyvector element type %t", + "invalid scalable vector element type %t", + "invalid number of tuple elements for scalable vector type", + "a NEON vector or polyvector must be either 64 or 128 bits wide", + "sizeless type %t is not allowed", + "an object of the sizeless type %t cannot be value-initialized", + "unexpected null declaration index found as part of scope %u", "musí být zadán název modulu pro mapování souboru modulu odkazující na soubor %sq", "Byla přijata hodnota indexu null, kde byl očekáván uzel v oddílu IFC %sq", "%nd nemůže mít typ %t.", @@ -3629,5 +3644,17 @@ "Atribut ext_vector_type se vztahuje pouze na logické hodnoty (bool), celočíselné typy (integer) nebo typy s plovoucí desetinnou čárkou (floating-point).", "Více specifikátorů do stejného sjednocení se nepovoluje.", "testovací zpráva", - "Aby se dalo použít --ms_c++23, musí být verze Microsoftu, která se emuluje, aspoň 1943." -] + "Aby se dalo použít --ms_c++23, musí být verze Microsoftu, která se emuluje, aspoň 1943.", + "invalid current working directory: %s", + "\"cleanup\" attribute within a constexpr function is not currently supported", + "the \"assume\" attribute can only apply to a null statement", + "assumption failed", + "variable templates are a C++14 feature", + "cannot take the address of a function with a parameter declared with the \"pass_object_size\" attribute", + "all arguments must have the same type", + "the final comparison was %s1 %s2 %s3", + "too many arguments for attribute %sq", + "mantissa string does not contain a valid number", + "floating-point error during constant evaluation", + "inheriting constructor %n ignored for copy/move-like operation" +] \ No newline at end of file diff --git a/Extension/bin/messages/de/messages.json b/Extension/bin/messages/de/messages.json index 5c05d13cd..8ad3f5239 100644 --- a/Extension/bin/messages/de/messages.json +++ b/Extension/bin/messages/de/messages.json @@ -163,7 +163,7 @@ "Unbekanntes #pragma.", null, "Die temporäre Datei \"%sq\" konnte nicht geöffnet werden: %s2", - "Der Name des Verzeichnisses für temporäre Dateien ist zu lang (%sq).", + null, "Zu wenig Argumente im Funktionsaufruf.", "Ungültige Gleitkommakonstante.", "Das Argument vom Typ \"%t1\" ist mit dem Parameter vom Typ \"%t2\" inkompatibel.", @@ -1828,7 +1828,7 @@ "Für die auto-Funktion ist ein nachstehender Rückgabetyp erforderlich.", "Eine Membervorlage kann nicht über einen reinen Spezifizierer verfügen", "Zeichenfolgenliteral zu lang -- überschüssige Zeichen werden ignoriert", - "Die Option zum Steuern des nullptr-Schlüsselworts kann nur beim Kompilieren von C++ verwendet werden.", + null, "std::nullptr_t wird in einen booleschen Wert konvertiert.", null, null, @@ -3230,8 +3230,8 @@ "Die andere Übereinstimmung lautet \"%t\".", "Das hier verwendete Attribut \"availability\" wird ignoriert.", "Die C++20-Initialisierungsanweisung in einer bereichsbasierten for-Anweisung entspricht in diesem Modus nicht dem Standard.", - "co_await kann nur auf eine bereichsbasierte for-Anweisung angewendet werden.", - "Der Typ des Bereichs kann in einer bereichsbasierten for-Schleife nicht abgeleitet werden.", + "co_await can only apply to a range-based \"for\" statement", + "cannot deduce type of range in range-based \"for\" statement", "Inlinevariablen sind ein C++17-Feature.", "Für eine \"operator delete\"-Funktion mit Zerstörung wird \"%t\" als erster Parameter benötigt.", "Eine \"operator delete\"-Funktion mit Zerstörung kann nur die Parameter \"std::size_t\" und \"std::align_val_t\" aufweisen.", @@ -3272,17 +3272,17 @@ "\"%sq\" ist kein importierbarer Header.", "Ein Modul ohne Namen kann nicht importiert werden.", "Ein Modul kann keine Schnittstellenabhängigkeit von sich selbst aufweisen.", - "Das Modul \"%sq\" wurde bereits importiert.", + "%m has already been imported", "Moduldatei", "Die Moduldatei für das Modul \"%sq\" wurde nicht gefunden.", "Die Moduldatei \"%sq\" konnte nicht importiert werden.", - "Erwartet wurde \"%s1\", stattdessen gefunden: \"%s2\".", + null, "beim Öffnen der Moduldatei \"%sq\"", "Unbekannter Partitionsname \"%sq\".", - "Unbekannte Moduldatei", - "Importierbare Headermoduldatei", - "EDG-Moduldatei", - "IFC-Moduldatei", + null, + null, + null, + null, "Unerwartete Moduldatei", "Der Typ des zweiten Operanden, \"%t2\", muss die gleiche Größe aufweisen wie \"%t1\".", "Der Typ muss trivial kopierbar sein.", @@ -3347,7 +3347,7 @@ "Der zu importierende Header \"%s\" wurde nicht gefunden.", "Mehrere Dateien in der Moduldateiliste stimmen mit \"%s\" überein.", "Die für \"%s\" gefundene Moduldatei ist für ein anderes Modul bestimmt.", - "Beliebige Art von Moduldatei", + null, "Die Moduldatei kann nicht gelesen werden.", "Die integrierte Funktion ist nicht verfügbar, weil der char8_t-Typ mit den aktuellen Optionen nicht unterstützt wird.", null, @@ -3368,7 +3368,7 @@ "Das Bitlayout für dieses Kompilierungsziel kann nicht interpretiert werden.", "Kein entsprechender Operator für IFC-Operator \"%sq\".", "Keine entsprechende Aufrufkonvention für IFC-Aufrufkonvention \"%sq\".", - "Das Modul \"%sq\" enthält nicht unterstützte Konstrukte.", + "%m contains unsupported constructs", "Nicht unterstütztes IFC-Konstrukt: %sq", "\"__is_signed\" kann ab jetzt nicht mehr als Schlüsselwort verwendet werden.", "Eine Arraydimension muss einen konstanten ganzzahligen Wert ohne Vorzeichen aufweisen.", @@ -3417,35 +3417,35 @@ "„wenn consteval“ und „wenn nicht consteval“ sind in diesem Modus nicht Standard", "das Weglassen von „()“ in einem Lambda-Deklarator ist in diesem Modus nicht der Standard", "eine „trailing-requires“-Klausel ist nicht zulässig, wenn die Lambda-Parameterliste ausgelassen wird", - "Modul %sq ungültige Partition angefordert", - "Modul %sq1 undefinierte Partition (könnte %sq2 sein) wurde angefordert", + "%m invalid partition requested", + "%m undefined partition (believed to be %sq) requested", null, null, - "Die %sq1-Dateiposition %u1 (relative Position %u2) des Moduls wurde für die %sq2-Partition angefordert. Dadurch wird das Ende der Partition überschritten", - "Modul %sq1 Dateiposition %u1 (relative Position %u2) wurde für die Partition %sq2 angefordert, welche mit dessen Partitionselementen falsch ausgerichtet ist", + "%m file position %u1 (relative position %u2) requested for partition %sq - which overflows the end of its partition", + "%m file position %u1 (relative position %u2) requested for partition %sq - which is misaligned with its partitions elements", "von Unterfeld %sq (relative Position zum Knoten %u)", "von Partition %sq Element %u1 (Dateiposition %u2, relative Position %u3)", "Attribute für Lambdas sind ein C++23-Feature", "der Bezeichner %sq könnte mit einem visuell ähnlichen Bezeichner verwechselt werden, der %p angezeigt wird", "dieser Kommentar enthält verdächtige Unicode-Formatierungssteuerzeichen", "diese Zeichenfolge enthält Unicode-Formatierungssteuerzeichen, die zu unerwartetem Laufzeitverhalten führen könnten", - "%d1 unterdrückte Warnung wurde bei der Verarbeitung des Moduls %sq1 festgestellt", - "%d1 unterdrückte Warnungen wurden bei der Verarbeitung des Moduls %sq1 festgestellt", - "%d1 unterdrückter Fehler wurde beim Verarbeiten des Moduls %sq1 festgestellt", - "%d1 unterdrückte Fehler wurden beim Verarbeiten des Moduls %sq1 festgestellt", + "%u suppressed warning was encountered while processing %m", + "%u suppressed warnings were encountered while processing %m", + "%u suppressed error was encountered while processing %m", + "%u suppressed errors were encountered while processing %m", "einschließlich", "Unterdrückt", "eine virtuelle Memberfunktion darf keinen expliziten „dies“-Parameter aufweisen", "das Übernehmen der Adresse einer expliziten „dies“-Funktion erfordert einen qualifizierten Namen.", "das Formatieren der Adresse einer expliziten „dies“-Funktion erfordert den Operator „&“", "Ein Zeichenfolgenliteral kann nicht zum Initialisieren eines flexiblen Arraymembers verwendet werden.", - "Die IFC-Darstellung der Definition der Funktion %sq ist ungültig.", + "the IFC representation of the definition of function %sq is invalid", null, "Ein UniLevel-IFC-Chart wurde nicht zum Angeben von Parametern verwendet.", "Der %u1 Parameter wurden im IFC-Parameterdefinitionschart angegeben, während %u2 Parameter in der IFC-Deklaration angegeben wurden.", "Der %u1 Parameter wurde im IFC-Parameterdefinitionschart angegeben, während %u2 Parameter in der IFC-Deklaration angegeben wurden.", "%u1 Parameter wurden im IFC-Parameterdefinitionschart angegeben, während der %u2 Parameter in der IFC-Deklaration angegeben wurde.", - "Die IFC-Darstellung der Definition der Funktion %sq fehlt.", + "the IFC representation of the definition of function %sq is missing", "Funktionsmodifizierer gilt nicht für eine statische Mitgliedervorlagendeklaration", "Die Mitgliederauswahl umfasst zu viele geschachtelte anonyme Typen", "Es gibt keinen gemeinsamen Typ zwischen den Operanden", @@ -3467,7 +3467,7 @@ "entweder ein Bitfeld mit einem unvollständigen Enumerationstyp oder eine opake Enumeration mit einem ungültigen Basistyp", "Es wurde versucht, ein Element aus der IFC-Partition %sq mithilfe eines Indexes in der IFC-Partition %sq2 zu erstellen", "Die Partition %sq hat ihre Eintragsgröße mit %u1 angegeben, obwohl %u2 erwartet wurde", - "Unerwartete IFC-Anforderung beim Verarbeiten des Moduls %sq1", + "an unexpected IFC requirement was encountered while processing %m", "Bedingungsfehler in Zeile %d in %s1: %sq2", "Die atomische Einschränkung hängt von sich selbst ab", "Die Funktion \"noreturn\" weist den Rückgabetyp \"nicht void\" auf.", @@ -3475,9 +3475,9 @@ "ein Standardvorlagenargument kann nicht für die Definition einer Membervorlage außerhalb seiner Klasse angegeben werden", "Ungültiger IFC-Bezeichnername %sq bei der Rekonstruktion der Entität gefunden", null, - "Modul %sq ungültiger Sortierwert", + "%m invalid sort value", "Eine aus einem IFC-Modul geladene Funktionsvorlage wurde fälschlicherweise als %nd analysiert", - "Fehler beim Laden eines IFC-Entitätsverweises im Modul \"%sq\"", + "failed to load an IFC entity reference in %m", "von Partition %sq Element %u1 (Dateiposition %u2, relative Position %u3)", "verkettete Kennzeichner sind für einen Klassentyp mit einem nichttrivialen Destruktor nicht zulässig", "Eine explizite Spezialisierungsdeklaration darf keine Frienddeklaration sein", @@ -3506,9 +3506,9 @@ null, "ein Initialisierer für einen flexiblen Arraymember kann nicht ausgewertet werden", "ein Standard-Bitfeldinitialisierer ist ein C++20-Feature", - "zu viele Argumente in der Vorlagenargumentliste im Modul %sq", + "too many arguments in template argument list in %m", "für das Vorlagenargument erkannt, das durch das %sq-Element %u1 dargestellt wird (Dateiposition %u2, relative Position %u3)", - "zu wenige Argumente in der Vorlagenargumentliste im Modul %sq", + "too few arguments in template argument list in %m", "wurde beim Verarbeiten der Vorlagenargumentliste erkannt, die durch das %sq-Element %u1 (Dateiposition %u2, relative Position %u3) dargestellt wird", "die Konvertierung vom bereichsbezogenen Enumerationstyp \"%t\" entspricht nicht dem Standard", "die Zuordnungsfreigabe stimmt nicht mit der Zuordnungsart überein (eine ist für ein Array und die andere nicht)", @@ -3517,8 +3517,8 @@ "__make_unsigned ist nur mit nicht booleschen Integer- und Enumerationstypen kompatibel", "der systeminterne Name\"%sq wird von hier aus als gewöhnlicher Bezeichner behandelt.", "Zugriff auf nicht initialisiertes Teilobjekt bei Index %d", - "IFC-Zeilennummer (%u1) überläuft maximal zulässigen Wert (%u2) Modul %sq", - "Das Modul %sq1 hat das Element %u der Partition %sq2 angefordert. Diese Dateiposition überschreitet den maximal darstellbaren Wert", + "IFC line number (%u1) overflows maximum allowed value (%u2) %m", + "%m requested element %u of partition %sq, this file position exceeds the maximum representable value", "Falsche Anzahl von Argumenten", "Einschränkung für Kandidat %n nicht erfüllt", "Die Anzahl der Parameter von %n stimmt nicht mit dem Aufruf überein", @@ -3551,7 +3551,7 @@ "IFC-Datei %sq kann nicht verarbeitet werden", "IFC-Version %u1.%u2 wird nicht unterstützt", "Die IFC-Architektur \"%sq\" ist nicht mit der aktuellen Zielarchitektur kompatibel", - "Das Modul %sq1 fordert den Index %u einer nicht unterstützten Partition an, die %sq2 entspricht", + "%m requests index %u of an unsupported partition corresponding to %sq", "Die Parameternummer %d von %n weist den Typ %t auf, der nicht abgeschlossen werden kann", "Die Parameternummer %d von %n weist den unvollständigen Typ %t auf", "Die Parameternummer %d von %n weist den abstrakten Typ %t auf", @@ -3570,7 +3570,7 @@ "Ungültige Reflexion (%r) für Ausdrucks-Splice", "%n wurde bereits definiert (vorherige Definition %p)", "Infovec-Objekt nicht initialisiert", - "value_of Typ %t1 ist nicht mit der angegebenen Reflexion kompatibel (Entität vom Typ %t2).", + "extract of type %t1 is not compatible with the given reflection (entity with type %t2)", "Das Reflektieren eines Überladungssatzes ist derzeit nicht zulässig.", "Diese systeminterne Funktion erfordert eine Reflexion für eine Vorlageninstanz.", "Inkompatible Typen %t1 und %t2 für Operator", @@ -3601,6 +3601,21 @@ "für die aktuelle Übersetzungseinheit konnte keine Headereinheit erstellt werden", "Die aktuelle Übersetzungseinheit verwendet mindestens ein Feature, das derzeit nicht in eine Headereinheit geschrieben werden kann", "\"explicit(bool)\" ist ein C++20-Feature", + "first argument must be a pointer to integer, enum, or supported floating-point type", + "C++ modules cannot be used when compiling multiple translation units", + "C++ modules cannot be used with the pre-C++11 \"export\" feature", + "the IFC token %sq is not supported", + "the \"pass_object_size\" attribute is only valid on parameters of function declarations", + "the argument of the %sq attribute %d1 must be a value between 0 and %d2", + "a ref-qualifier here is ignored", + "invalid NEON vector element type %t", + "invalid NEON polyvector element type %t", + "invalid scalable vector element type %t", + "invalid number of tuple elements for scalable vector type", + "a NEON vector or polyvector must be either 64 or 128 bits wide", + "sizeless type %t is not allowed", + "an object of the sizeless type %t cannot be value-initialized", + "unexpected null declaration index found as part of scope %u", "Für die Moduldateizuordnung, die auf die Datei \"%sq\" verweist, muss ein Modulname angegeben werden.", "Ein Nullindexwert wurde empfangen, obwohl ein Knoten in der IFC-Partition %sq erwartet wurde.", "%nd darf nicht den Typ \"%t\" aufweisen", @@ -3629,5 +3644,17 @@ "Das Attribut \"ext_vector_type\" gilt nur für boolesche, ganzzahlige oder Gleitkommatypen", "Mehrere Kennzeichner in derselben Union sind nicht zulässig.", "Testnachricht", - "Die zu emulierende Microsoft-Version muss mindestens 1943 sein, damit \"--ms_c++23\" verwendet werden kann." -] + "Die zu emulierende Microsoft-Version muss mindestens 1943 sein, damit \"--ms_c++23\" verwendet werden kann.", + "invalid current working directory: %s", + "\"cleanup\" attribute within a constexpr function is not currently supported", + "the \"assume\" attribute can only apply to a null statement", + "assumption failed", + "variable templates are a C++14 feature", + "cannot take the address of a function with a parameter declared with the \"pass_object_size\" attribute", + "all arguments must have the same type", + "the final comparison was %s1 %s2 %s3", + "too many arguments for attribute %sq", + "mantissa string does not contain a valid number", + "floating-point error during constant evaluation", + "inheriting constructor %n ignored for copy/move-like operation" +] \ No newline at end of file diff --git a/Extension/bin/messages/es/messages.json b/Extension/bin/messages/es/messages.json index 926681c81..1aaac7df8 100644 --- a/Extension/bin/messages/es/messages.json +++ b/Extension/bin/messages/es/messages.json @@ -163,7 +163,7 @@ "#pragma no reconocida", null, "no se pudo abrir el archivo temporal %sq: %s2", - "el nombre del directorio de archivos temporales es demasiado largo (%sq)", + null, "no hay suficientes argumentos en la llamada a función", "constante flotante no válida", "un argumento de tipo %t1 no es compatible con un parámetro de tipo %t2", @@ -1828,7 +1828,7 @@ "la función 'auto' requiere un tipo de valor devuelto final", "una plantilla de miembro no puede tener un especificador puro", "literal de cadena demasiado largo: se omitieron los caracteres sobrantes", - "la opción para controlar la palabra clave nullptr solo se puede usar al compilar C++", + null, "std::nullptr_t convertido en booleano", null, null, @@ -3230,8 +3230,8 @@ "la otra coincidencia es %t", "el atributo \"availability\" usado aquí se ignora", "La instrucción del inicializador de estilo C++20 en una instrucción \"for\" basada en intervalo no es estándar en este modo", - "co_await solo se puede aplicar a una instrucción for basada en intervalo", - "no se puede deducir el tipo de intervalo en el bucle \"for\" basado en intervalo", + "co_await can only apply to a range-based \"for\" statement", + "cannot deduce type of range in range-based \"for\" statement", "las variables insertadas son una característica de C++17", "el operador de destrucción requiere %t como primer parámetro", "un operador de destrucción \"delete\" no puede tener parámetros distintos de std::size_t y std::align_val_t", @@ -3272,17 +3272,17 @@ "%sq no es un encabezado que se pueda importar", "no se puede importar un módulo sin nombre", "un módulo no puede tener una dependencia de interfaz de sí mismo", - "el módulo %sq ya se ha importado", + "%m has already been imported", "archivo de módulo", "no se encuentra el archivo del módulo %sq", "No se puede importar el archivo de módulo %sq.", - "se esperaba %s1, pero se encontró %s2 en su lugar", + null, "al abrir el archivo de módulo %sq", "nombre de partición %sq desconocido", - "un archivo de módulo desconocido", - "un archivo de módulo de encabezado importable", - "un archivo de módulo EDG", - "un archivo de módulo IFC", + null, + null, + null, + null, "un archivo de módulo inesperado", "el tipo del segundo operando %t2 debe tener el mismo tamaño que %t1", "el tipo debe poder copiarse de forma trivial", @@ -3347,7 +3347,7 @@ "no se encuentra el encabezado \"%s\" para importar", "hay más de un archivo de la lista de archivos de módulo que coincide con \"%s\"", "el archivo de módulo que se encontró para \"%s\" es para otro módulo", - "cualquier tipo de archivo de módulo", + null, "no se puede leer el archivo de módulo", "la función integrada no está disponible porque no se admite el tipo char8_t con las opciones actuales", null, @@ -3368,7 +3368,7 @@ "no se puede interpretar el diseño de bits de este destino de compilación", "no hay ningún operador correspondiente al operador IFC %sq", "no hay ninguna convención de llamada correspondiente a la convención de llamada IFC %sq", - "el módulo %sq contiene construcciones no admitidas", + "%m contains unsupported constructs", "construcción IFC no admitida: %sq", "__is_signed ya no es una palabra clave a partir de este punto", "una dimensión de matriz debe tener un valor entero sin signo constante", @@ -3417,35 +3417,35 @@ "'if consteval' y 'if not consteval' no son estándar en este modo", "omitir '()' en un declarador lambda no es estándar en este modo", "no se permite una cláusula trailing-requires-clause cuando se omite la lista de parámetros lambda", - "se solicitó una partición no válida del módulo %sq", - "módulo %sq1 partición no definida (se considera que es %sq2) solicitada", + "%m invalid partition requested", + "%m undefined partition (believed to be %sq) requested", null, null, - "módulo %sq1, posición de archivo %u1 (posición relativa %u2) solicitada para la partición %sq2, que desborda el final de su partición", - "módulo %sq1 posición de archivo %u1 (posición relativa %u2) solicitada para la partición %sq2, que está mal alineada con sus elementos de particiones", + "%m file position %u1 (relative position %u2) requested for partition %sq - which overflows the end of its partition", + "%m file position %u1 (relative position %u2) requested for partition %sq - which is misaligned with its partitions elements", "desde el subcampo %sq (posición relativa al nodo %u)", "desde la partición %sq elemento %u1 (posición de archivo %u2, posición relativa %u3)", "los atributos de las expresiones lambda son una característica de C++23", "el identificador %sq podría confundirse con uno visualmente similar que aparece %p", "este comentario contiene caracteres de control de formato Unicode sospechosos", "esta cadena contiene caracteres de control de formato Unicode que podrían dar lugar a un comportamiento inesperado en tiempo de ejecución", - "Se encontró %d1 advertencia suprimida al procesar el módulo %sq1", - "Se encontraron %d1 advertencias suprimidas al procesar el módulo %sq1", - "Se encontró un error suprimido %d1 al procesar el módulo %sq1", - "Se encontraron %d1 errores suprimidos al procesar el módulo %sq1", + "%u suppressed warning was encountered while processing %m", + "%u suppressed warnings were encountered while processing %m", + "%u suppressed error was encountered while processing %m", + "%u suppressed errors were encountered while processing %m", "Incluido", "Suprimido", "una función miembro virtual no puede tener un parámetro 'this' explícito", "tomar la dirección de una función explícita \"this\" requiere un nombre completo", "la formación de la dirección de una función explícita 'this' requiere el operador '&'", "no se puede usar un literal de cadena para inicializar un miembro de matriz flexible", - "La representación IFC de la definición de la función %sq no es válida", + "the IFC representation of the definition of function %sq is invalid", null, "no se usó un gráfico IFC UniLevel para especificar parámetros", "el gráfico de definición de parámetros IFC especificó %u1 parámetros, mientras que la declaración IFC especificó %u2 parámetros", "el gráfico de definición de parámetros IFC especificó %u1 parámetro, mientras que la declaración IFC especificó %u2 parámetros", "el gráfico de definición de parámetros IFC especificó %u1 parámetros, mientras que la declaración IFC especificó %u2 parámetro", - "Falta la representación IFC de la definición de la función %sq", + "the IFC representation of the definition of function %sq is missing", "el modificador de función no se aplica a la declaración de plantilla de miembro", "la selección de miembros implica demasiados tipos anónimos anidados", "no hay ningún tipo común entre los operandos", @@ -3467,7 +3467,7 @@ "un campo de bits con un tipo de enumeración incompleto o una enumeración opaca con un tipo base no válido", "intentó construir un elemento a partir de la partición IFC %sq mediante un índice en la partición IFC %sq2", "la partición %sq especificó su tamaño de entrada como %u1 cuando se esperaba %u2", - "se encontró un requisito IFC inesperado al procesar el módulo %sq1", + "an unexpected IFC requirement was encountered while processing %m", "error de condición en la línea %d en %s1: %sq2", "la restricción atómica depende de sí misma", "La función \"noreturn\" tiene un tipo de valor devuelto distinto de nulo", @@ -3475,9 +3475,9 @@ "no se puede especificar un argumento de plantilla predeterminado en la definición de una plantilla de miembro fuera de su clase", "se encontró un nombre de identificador IFC no válido %sq durante la reconstrucción de entidades", null, - "el módulo %sq es un valor de ordenación no válido", + "%m invalid sort value", "una plantilla de función cargada desde un módulo IFC se analizó incorrectamente como %nd", - "no se pudo cargar una referencia de entidad IFC en el módulo %sq", + "failed to load an IFC entity reference in %m", "desde la partición %sq elemento %u1 (posición de archivo %u2, posición relativa %u3)", "no se permiten designadores encadenados para un tipo de clase con un destructor no trivial", "una declaración de especialización explícita no puede ser una declaración \"friend\"", @@ -3506,9 +3506,9 @@ null, "no se puede evaluar un inicializador para un miembro de matriz flexible", "un inicializador de campo de bits predeterminado es una característica de C++20", - "demasiados argumentos en la lista de argumentos de plantilla en el módulo %sq", + "too many arguments in template argument list in %m", "detectado para el argumento de plantilla representado por el elemento %sq %u1 (posición de archivo %u2, posición relativa %u3)", - "demasiado pocos argumentos en la lista de argumentos de plantilla en el módulo %sq", + "too few arguments in template argument list in %m", "detectado al procesar la lista de argumentos de plantilla representada por el elemento %sq %u1 (posición de archivo %u2, posición relativa %u3)", "la conversión del tipo de enumeración con ámbito %t no es estándar", "la desasignación no coincide con la clase de asignación (una es para una matriz y la otra no)", @@ -3517,8 +3517,8 @@ "__make_unsigned solo es compatible con tipos de enumeración y enteros no booleanos", "el nombre intrínseco %sq se tratará como un identificador normal desde aquí", "acceso al subobjeto no inicializado en el índice %d", - "El número de línea IFC (%u1) desborda el valor máximo permitido (%u2) del módulo %sq", - "el módulo %sq1 elemento solicitado %u de la partición %sq2, esta posición de archivo supera el valor máximo que se puede representar", + "IFC line number (%u1) overflows maximum allowed value (%u2) %m", + "%m requested element %u of partition %sq, this file position exceeds the maximum representable value", "número de argumentos incorrecto.", "restricción en el candidato %n no satisfecho", "el número de parámetros de %n no coincide con la llamada", @@ -3551,7 +3551,7 @@ "no se puede procesar la %sq del archivo IFC", "no se admite la versión IFC %u1.%u2", "la arquitectura IFC %sq no es compatible con la arquitectura de destino actual", - "el módulo %sq1 solicita el índice %u de una partición no admitida correspondiente a %sq2", + "%m requests index %u of an unsupported partition corresponding to %sq", "el número de parámetro %d de %n tiene un tipo %t que no se puede completar", "el número de parámetro %d de %n tiene el tipo incompleto %t", "el número de parámetro %d de %n tiene el tipo abstracto %t", @@ -3570,7 +3570,7 @@ "reflexión incorrecta (%r) para la expresión splice", "%n ya se ha definido (definición anterior %p)", "objeto infovec no inicializado", - "value_of tipo %t1 no es compatible con la reflexión proporcionada (entidad con el tipo %t2)", + "extract of type %t1 is not compatible with the given reflection (entity with type %t2)", "no se permite actualmente reflejar un conjunto de sobrecargas", "este elemento intrínseco requiere una reflexión para una instancia de plantilla", "tipos incompatibles %t1 y %t2 para el operador", @@ -3601,6 +3601,21 @@ "no se pudo crear una unidad de encabezado para la unidad de traducción actual", "la unidad de traducción actual usa una o varias características que no se pueden escribir actualmente en una unidad de encabezado", "'explicit(bool)' es una característica de C++20", + "first argument must be a pointer to integer, enum, or supported floating-point type", + "C++ modules cannot be used when compiling multiple translation units", + "C++ modules cannot be used with the pre-C++11 \"export\" feature", + "the IFC token %sq is not supported", + "the \"pass_object_size\" attribute is only valid on parameters of function declarations", + "the argument of the %sq attribute %d1 must be a value between 0 and %d2", + "a ref-qualifier here is ignored", + "invalid NEON vector element type %t", + "invalid NEON polyvector element type %t", + "invalid scalable vector element type %t", + "invalid number of tuple elements for scalable vector type", + "a NEON vector or polyvector must be either 64 or 128 bits wide", + "sizeless type %t is not allowed", + "an object of the sizeless type %t cannot be value-initialized", + "unexpected null declaration index found as part of scope %u", "se debe especificar un nombre de módulo para la asignación de archivos de módulo que hace referencia al archivo %sq", "se recibió un valor de índice nulo donde se esperaba un nodo en la partición IFC %sq", "%nd no puede tener el tipo %t", @@ -3629,5 +3644,17 @@ "el atributo \"ext_vector_type\" solo se aplica a tipos booleanos, enteros o de punto flotante", "no se permiten varios designadores en la misma unión", "mensaje de prueba", - "la versión de Microsoft que se emula debe ser al menos 1943 para usar \"--ms_c++23\"" -] + "la versión de Microsoft que se emula debe ser al menos 1943 para usar \"--ms_c++23\"", + "invalid current working directory: %s", + "\"cleanup\" attribute within a constexpr function is not currently supported", + "the \"assume\" attribute can only apply to a null statement", + "assumption failed", + "variable templates are a C++14 feature", + "cannot take the address of a function with a parameter declared with the \"pass_object_size\" attribute", + "all arguments must have the same type", + "the final comparison was %s1 %s2 %s3", + "too many arguments for attribute %sq", + "mantissa string does not contain a valid number", + "floating-point error during constant evaluation", + "inheriting constructor %n ignored for copy/move-like operation" +] \ No newline at end of file diff --git a/Extension/bin/messages/fr/messages.json b/Extension/bin/messages/fr/messages.json index 6d2f9b052..feffb698d 100644 --- a/Extension/bin/messages/fr/messages.json +++ b/Extension/bin/messages/fr/messages.json @@ -163,7 +163,7 @@ "#pragma non reconnu", null, "impossible d'ouvrir le fichier temporaire %sq : %s2", - "le nom du répertoire de fichiers temporaires est trop long (%sq)", + null, "arguments insuffisants dans l'appel de fonction", "constante flottante non valide", "l'argument de type %t1 est incompatible avec le paramètre de type %t2", @@ -1828,7 +1828,7 @@ "une fonction 'auto' requiert un type de retour de fin", "un modèle de membre ne peut pas avoir un spécificateur pure", "littéral de chaîne trop long -- caractères en trop ignorés", - "l'option pour contrôler le mot clé nullptr peut être uniquement utilisée lors de la compilation de C++", + null, "std::nullptr_t converted en bool", null, null, @@ -3230,8 +3230,8 @@ "l'autre correspondance est %t", "l'attribut 'availability' utilisé ici est ignoré", "L'instruction de l'initialiseur de style C++20 dans une instruction 'for' basée sur une plage n'est pas standard dans ce mode", - "co_await peut s'appliquer uniquement à une instruction for basée sur une plage", - "impossible de déduire le type de la plage dans une boucle 'for' basée sur une plage", + "co_await can only apply to a range-based \"for\" statement", + "cannot deduce type of range in range-based \"for\" statement", "les variables inline sont une fonctionnalité C++17", "l'opérateur delete de destruction nécessite %t en tant que premier paramètre", "un opérateur delete de destruction ne peut pas avoir d'autres paramètres que std::size_t et std::align_val_t", @@ -3272,17 +3272,17 @@ "%sq n'est pas un en-tête importable", "impossible d'importer un module sans nom", "un module ne peut pas avoir de dépendance d'interface par rapport à lui-même", - "le module %sq a déjà été importé", + "%m has already been imported", "fichier de module", "fichier de module introuvable pour le module %sq", "impossible d'importer le fichier de module %sq", - "%s1 attendu, %s2 trouvé à la place", + null, "à l'ouverture du fichier de module %sq", "nom de partition inconnu %sq", - "fichier de module inconnu", - "fichier de module d'en-tête importable", - "fichier de module EDG", - "fichier de module IFC", + null, + null, + null, + null, "fichier de module inattendu", "le type du deuxième opérande %t2 doit avoir la même taille que %t1", "le type doit pouvoir être copié de façon triviale", @@ -3347,7 +3347,7 @@ "l'en-tête '%s' à importer est introuvable", "plusieurs fichiers dans la liste de fichiers de module correspondent à '%s'", "le fichier de module trouvé pour '%s' est destiné à un autre module", - "n'importe quel genre de fichier de module", + null, "impossible de lire le fichier de module", "la fonction intégrée n'est pas disponible, car le type char8_t n'est pas pris en charge avec les options actuelles", null, @@ -3368,7 +3368,7 @@ "impossible d'interpréter la disposition des bits pour cette cible de compilation", "aucun opérateur correspondant pour l'opérateur IFC %sq", "aucune convention d'appel correspondante pour la convention d'appel IFC %sq", - "le module %sq contient des constructions non prises en charge", + "%m contains unsupported constructs", "construction IFC non prise en charge : %sq", "__is_signed n'est plus un mot clé à partir de ce point", "une dimension de tableau doit avoir une valeur d'entier non signé constante", @@ -3417,35 +3417,35 @@ "« if consteval » et « if not consteval » ne sont pas standard dans ce mode", "l’omission de « () » dans un déclarateur lambda n’est pas standard dans ce mode", "une clause requires de fin n’est pas autorisée lorsque la liste de paramètres lambda est omise", - "module %sq partition non valide demandée", - "module %sq1 partition non définie (on pense qu’il s’agirait de %sq2) demandée", + "%m invalid partition requested", + "%m undefined partition (believed to be %sq) requested", null, null, - "module %sq1 file position %u1 (position relative %u2) demandée pour la partition %sq2 - qui dépasse la fin de sa partition", - "module %sq1 position de fichier %u1 (position relative %u2) demandée pour la partition %sq2, qui est mal alignée avec ses éléments de partitions", + "%m file position %u1 (relative position %u2) requested for partition %sq - which overflows the end of its partition", + "%m file position %u1 (relative position %u2) requested for partition %sq - which is misaligned with its partitions elements", "à partir du sous-champ %sq (position par rapport au nœud %u)", "à partir de la partition %sq, élément %u1 (position de fichier %u2, position relative %u3)", "les attributs des expressions lambdas sont une fonctionnalité C++23", "l’identificateur %sq peut être confondu avec un identificateur visuellement similaire qui apparaît %p", "ce commentaire contient des caractères de contrôle de mise en forme Unicode suspects", "cette chaîne contient des caractères de contrôle de mise en forme Unicode qui peuvent entraîner un comportement d’exécution inattendu", - "%d1 avertissement supprimé rencontré lors du traitement du module %sq1", - "%d1 avertissements supprimés rencontrés lors du traitement du module %sq1", - "%d1 erreur supprimé rencontré lors du traitement du module %sq1", - "%d1 erreurs supprimées rencontrées lors du traitement du module %sq1", + "%u suppressed warning was encountered while processing %m", + "%u suppressed warnings were encountered while processing %m", + "%u suppressed error was encountered while processing %m", + "%u suppressed errors were encountered while processing %m", "Y compris", "Supprimé", "une fonction membre virtuelle ne peut pas avoir un paramètre « this » explicite", "la prise de l’adresse d’une fonction « this » explicite nécessite un nom qualifié", "la création de l’adresse d’une fonction « this » explicite nécessite l’opérateur '&'", "impossible d’utiliser un littéral de chaîne pour initialiser un membre de tableau flexible", - "La représentation IFC de la définition de la fonction %sq n’est pas valide.", + "the IFC representation of the definition of function %sq is invalid", null, "un graphique IFC UniLevel n’a pas été utilisé pour spécifier des paramètres.", "%u1 paramètres ont été spécifiés par le graphique de définition de paramètres IFC alors que %u2 paramètres ont été spécifiés par la déclaration IFC", "%u1 paramètre a été spécifié par le graphique de définition de paramètres IFC alors que %u2 paramètres ont été spécifiés par la déclaration IFC", "%u1 paramètres ont été spécifiés par le graphique de définition de paramètres IFC alors que %u2 paramètre a été spécifié par la déclaration IFC", - "La représentation IFC de la définition de la fonction %sq est manquante.", + "the IFC representation of the definition of function %sq is missing", "Le modificateur de fonction ne s'applique pas à la déclaration du modèle de membre.", "la sélection de membre implique un trop grand nombre de types anonymes imbriqués", "il n’existe aucun type commun entre les opérandes", @@ -3467,7 +3467,7 @@ "soit un champ de bits avec un type enum incomplet, soit une énumération opaque avec un type de base non valide", "a tenté de construire un élément à partir d’une partition IFC %sq à l’aide d’un index dans la partition IFC %sq2.", "le %sq de partition a spécifié sa taille d’entrée %u1 alors que %u2 était attendu", - "une exigence IFC inattendue s’est produite lors du traitement du module %sq1.", + "an unexpected IFC requirement was encountered while processing %m", "échec de la condition à la ligne %d dans %s1 : %sq2", "la contrainte atomique dépend d’elle-même.", "La fonction 'noreturn' a un type de retour non vide", @@ -3475,9 +3475,9 @@ "impossible de spécifier un argument template par défaut sur la définition d'un membre de modèle en dehors de sa classe", "nom d’identificateur IFC non valide %sq rencontré lors de la reconstruction de l’entité", null, - "le module %sq valeur de tri non valide", + "%m invalid sort value", "un modèle de fonction chargé à partir d’un module IFC a été analysé de manière incorrecte en tant que %nd", - "échec du chargement d’une référence d’entité IFC dans le module %sq", + "failed to load an IFC entity reference in %m", "à partir de la partition %sq, élément %u1 (position de fichier %u2, position relative %u3)", "les désignateurs chaînés ne sont pas autorisés pour un type classe avec un destructeur non trivial", "une déclaration de spécialisation explicite ne peut pas être une déclaration friend", @@ -3506,9 +3506,9 @@ null, "ne peut pas évaluer un initialiseur pour un membre de tableau flexible", "un initialiseur de champ de bits par défaut est une fonctionnalité C++20", - "beaucoup d’arguments dans la liste d’arguments du modèle du module %sq", + "too many arguments in template argument list in %m", "détecté pour l’argument de modèle représenté par l’élément %sq %u1 (position de fichier %u2, position relative %u3)", - "nombre insuffisant d’arguments dans la liste d’arguments du modèle du module %sq", + "too few arguments in template argument list in %m", "détecté lors du traitement de la liste d’arguments de modèle représentée par l’élément %sq %u1 (position de fichier %u2, position relative %u3)", "conversion à partir du type d’énumération étendue %t n’est pas standard", "la désallocation ne correspond pas au genre d’allocation (l’un est pour un tableau et l’autre non)", @@ -3517,8 +3517,8 @@ "__make_unsigned n’est compatible qu’avec les types entier et enum non bool", "le nom intrinsèque %sq sera considéré comme un identificateur ordinaire à partir d’ici", "accès au sous-objet non initialisé à l’index %d", - "Le numéro de ligne IFC (%u1) dépasse le module de valeur maximale autorisée (%u2) %sq", - "module %sq1 élément demandé %u de partition %sq2, cette position de fichier dépasse la valeur maximale pouvant être représentée", + "IFC line number (%u1) overflows maximum allowed value (%u2) %m", + "%m requested element %u of partition %sq, this file position exceeds the maximum representable value", "nombre d'arguments erroné", "contrainte sur le candidat %n pas satisfaite", "nombre de paramètres de %n ne correspond pas à l’appel", @@ -3551,7 +3551,7 @@ "Le fichier IFC %sq ne peut pas être traité", "La version IFC %u1.%u2 n'est pas prise en charge", "L'architecture IFC %sq est incompatible avec l'architecture cible actuelle", - "le module %sq1 demande l'index %u d'une partition non prise en charge correspondant à %sq2", + "%m requests index %u of an unsupported partition corresponding to %sq", "le paramètre numéro %d de %n a un type %t qui ne peut pas être complété", "le numéro de paramètre %d de %n a un type incomplet %t", "le numéro de paramètre %d de %n a un type abstrait %t", @@ -3570,7 +3570,7 @@ "réflexion incorrecte (%r) pour la splice d’expression", "%n a déjà été défini (définition précédente %p)", "objet infovec non initialisé", - "value_of type %t1 n'est pas compatible avec la réflexion donnée (entité de type %t2)", + "extract of type %t1 is not compatible with the given reflection (entity with type %t2)", "refléter un ensemble de surcharge n'est actuellement pas autorisé", "cette intrinsèque nécessite une réflexion pour une instance de modèle", "types incompatibles %t1 et %t2 pour l'opérateur", @@ -3601,6 +3601,21 @@ "impossible de créer une unité d’en-tête pour l’unité de traduction actuelle", "l’unité de traduction actuelle utilise une ou plusieurs fonctionnalités qui ne peuvent actuellement pas être écrites dans une unité d’en-tête", "'explicit(bool)' est une fonctionnalité C++20", + "first argument must be a pointer to integer, enum, or supported floating-point type", + "C++ modules cannot be used when compiling multiple translation units", + "C++ modules cannot be used with the pre-C++11 \"export\" feature", + "the IFC token %sq is not supported", + "the \"pass_object_size\" attribute is only valid on parameters of function declarations", + "the argument of the %sq attribute %d1 must be a value between 0 and %d2", + "a ref-qualifier here is ignored", + "invalid NEON vector element type %t", + "invalid NEON polyvector element type %t", + "invalid scalable vector element type %t", + "invalid number of tuple elements for scalable vector type", + "a NEON vector or polyvector must be either 64 or 128 bits wide", + "sizeless type %t is not allowed", + "an object of the sizeless type %t cannot be value-initialized", + "unexpected null declaration index found as part of scope %u", "un nom de module doit être spécifié pour la carte de fichiers de module référençant le fichier %sq", "une valeur d’index null a été reçue alors qu’un nœud de la partition IFC %sq était attendu", "%nd ne peut pas avoir le type %t", @@ -3629,5 +3644,17 @@ "l'attribut 'ext_vector_type' s'applique uniquement aux types booléens, entiers ou à virgule flottante", "plusieurs désignateurs dans la même union ne sont pas autorisés", "message de test", - "la version émulée Microsoft doit être au moins la version 1943 pour permettre l'utilisation de « --ms_c++23 »" -] + "la version émulée Microsoft doit être au moins la version 1943 pour permettre l'utilisation de « --ms_c++23 »", + "invalid current working directory: %s", + "\"cleanup\" attribute within a constexpr function is not currently supported", + "the \"assume\" attribute can only apply to a null statement", + "assumption failed", + "variable templates are a C++14 feature", + "cannot take the address of a function with a parameter declared with the \"pass_object_size\" attribute", + "all arguments must have the same type", + "the final comparison was %s1 %s2 %s3", + "too many arguments for attribute %sq", + "mantissa string does not contain a valid number", + "floating-point error during constant evaluation", + "inheriting constructor %n ignored for copy/move-like operation" +] \ No newline at end of file diff --git a/Extension/bin/messages/it/messages.json b/Extension/bin/messages/it/messages.json index 4920fe2bb..df509acd1 100644 --- a/Extension/bin/messages/it/messages.json +++ b/Extension/bin/messages/it/messages.json @@ -163,7 +163,7 @@ "direttiva #pragma non riconosciuta", null, "impossibile aprire il file temporaneo %sq: %s2", - "il nome della directory dei file temporanei è troppo lungo (%sq)", + null, "argomenti insufficienti nella chiamata di funzione", "costante mobile non valida", "l'argomento di tipo %t1 è incompatibile con il parametro di tipo %t2", @@ -1828,7 +1828,7 @@ "con la funzione 'auto' è richiesto un tipo restituito finale", "un modello di membro non può avere un identificatore pure", "valore letterale stringa troppo lungo -- caratteri in eccesso ignorati", - "è possibile utilizzare l'opzione per controllare la parola chiave nullptr solo quando si esegue la compilazione nel linguaggio C++", + null, "std::nullptr_t convertito in bool", null, null, @@ -3230,8 +3230,8 @@ "l'altra corrispondenza è %t", "l'attributo 'availability' usato in questo punto viene ignorato", "l'istruzione di inizializzatore di tipo C++20 in un'istruzione 'for' basata su intervallo non è standard in questa modalità", - "co_await può essere applicato solo a un'istruzione for basata su intervallo", - "non è possibile dedurre il tipo dell'intervallo nel ciclo 'for' basato su intervallo", + "co_await can only apply to a range-based \"for\" statement", + "cannot deduce type of range in range-based \"for\" statement", "le variabili inline sono una funzionalità di C++17", "per l'eliminazione dell'operatore di eliminazione definitiva è necessario specificare %t come primo parametro", "per l'eliminazione di un operatore di eliminazione definitiva non è possibile specificare parametri diversi da std::size_t e std::align_val_t", @@ -3272,17 +3272,17 @@ "%sq non è un'intestazione importabile", "non è possibile importare un modulo senza nome", "un modulo non può avere una dipendenza di interfaccia impostata su se stesso", - "il modulo %sq è già stato importato", + "%m has already been imported", "file di modulo", "non è stato possibile trovare il file di modulo per il modulo %sq", "non è stato possibile importare il file di modulo %sq", - "è previsto %s1, ma è stato trovato %s2", + null, "durante l'apertura del file di modulo %sq", "il nome di partizione %sq è sconosciuto", - "un file di modulo sconosciuto", - "un file di modulo intestazione importabile", - "un file di modulo EDG", - "un file di modulo IFC", + null, + null, + null, + null, "un file di modulo imprevisto", "il tipo del secondo operando %t2 deve avere le stesse dimensioni di %t1", "il tipo deve essere facilmente copiabile", @@ -3347,7 +3347,7 @@ "non è possibile trovare l'intestazione '%s' da importare", "più di un file nell'elenco file di modulo corrisponde a '%s'", "il file di modulo trovato per '%s' è riferito a un modulo diverso", - "qualsiasi tipo di modulo", + null, "non è possibile leggere il file del modulo", "la funzione predefinita non è disponibile perché il tipo char8_t non è supportato con le opzioni correnti", null, @@ -3368,7 +3368,7 @@ "non è possibile interpretare il layout di bit per questa destinazione di compilazione", "non esiste alcun operatore corrispondente per l'operatore IFC %sq", "non esiste alcuna convenzione di chiamata corrispondente per la convenzione di chiamata IFC %sq", - "il modulo %sq contiene costrutti non supportati", + "%m contains unsupported constructs", "costrutto IFC non supportato: %sq", "__is_signed non è più una parola chiave a partire da questo punto", "una dimensione di matrice deve avere un valore intero senza segno costante", @@ -3417,35 +3417,35 @@ "'if consteval' e 'if not consteval' non sono standard in questa modalità", "l'omissione di '()' in un dichiaratore lambda non è standard in questa modalità", "una clausola requires finale non è consentita quando l'elenco di parametri lambda viene omesso", - "modulo %sq partizione non valida richiesta", - "richiesta partizione non definita del modulo %sq1 (che si ritiene sia %sq2)", + "%m invalid partition requested", + "%m undefined partition (believed to be %sq) requested", null, null, - "modulo %sq1 posizione file %u1 (posizione relativa %u2) richiesto per la partizione %sq2, che causa l'overflow della fine della partizione", - "modulo %sq1 posizione file %u1 (posizione relativa %u2) richiesto per la partizione %sq2, che non è allineata agli elementi delle partizioni", + "%m file position %u1 (relative position %u2) requested for partition %sq - which overflows the end of its partition", + "%m file position %u1 (relative position %u2) requested for partition %sq - which is misaligned with its partitions elements", "dal sottocampo %sq (posizione relativa al nodo %u)", "dalla partizione %sq elemento %u1 (posizione file %u2, posizione relativa %u3)", "gli attributi nelle espressioni lambda sono una funzionalità di C++23", "l'identificatore %sq potrebbe essere confuso con un identificatore visivamente simile visualizzato %p", "questo commento contiene caratteri di controllo di formattazione Unicode sospetti", "questa stringa contiene caratteri di controllo di formattazione Unicode che potrebbero causare un comportamento di runtime imprevisto", - "%d1 avviso eliminato durante l'elaborazione del modulo %sq1", - "%d1 avvisi eliminati rilevati durante l'elaborazione del modulo %sq1", - "Errore %d1 eliminato durante l'elaborazione del modulo %sq1", - "%d1 errori eliminati rilevati durante l'elaborazione del modulo %sq1", + "%u suppressed warning was encountered while processing %m", + "%u suppressed warnings were encountered while processing %m", + "%u suppressed error was encountered while processing %m", + "%u suppressed errors were encountered while processing %m", "compreso", "eliminato", "una funzione membro virtuale non può avere un parametro 'this' esplicito", "l'acquisizione dell'indirizzo di una funzione esplicita 'this' richiede un nome qualificato", "per formare l'indirizzo di una funzione esplicita 'this' è necessario l'operatore '&'", "impossibile utilizzare un valore letterale stringa per inizializzare un membro di matrice flessibile", - "La rappresentazione IFC della definizione della funzione %sq non è valida", + "the IFC representation of the definition of function %sq is invalid", null, "un grafico IFC UniLevel non è stato usato per specificare i parametri", "%u1 parametri specificati dal grafico di definizione dei parametri IFC mentre %u2 parametri sono stati specificati dalla dichiarazione IFC", "%u1 parametro è stato specificato dal grafico di definizione del parametro IFC mentre %u2 parametri sono stati specificati dalla dichiarazione IFC", "%u1 parametri sono stati specificati dal grafico di definizione del parametro IFC mentre %u2 parametro è stato specificato dalla dichiarazione IFC", - "Manca la rappresentazione IFC della definizione della funzione %sq", + "the IFC representation of the definition of function %sq is missing", "il modificatore di funzione non si applica alla dichiarazione del modello di membro", "la selezione dei membri implica troppi tipi anonimi annidati", "non esiste alcun tipo comune tra gli operandi", @@ -3467,7 +3467,7 @@ "o un campo di bit con un tipo di enumerazione incompleto o un'enumerazione opaca con un tipo di base non valido", "ha tentato di costruire un elemento dalla partizione IFC %sq utilizzando un indice nella partizione IFC %sq2", "la partizione %sq ha specificato la dimensione della voce come %u1 mentre era previsto %u2", - "Durante l'elaborazione del modulo %sq1 è stato riscontrato un requisito IFC imprevisto.", + "an unexpected IFC requirement was encountered while processing %m", "condizione fallita alla riga %d in %s1: %sq2", "il vincolo atomico dipende da se stesso", "La funzione 'noreturn' ha un tipo restituito non void", @@ -3475,9 +3475,9 @@ "non è possibile specificare un argomento di modello predefinito nella definizione di un modello di membro all'esterno della relativa classe", "nome identificatore IFC %sq non valido rilevato durante la ricostruzione dell'entità", null, - "il modulo %sq valore di ordinamento non valido", + "%m invalid sort value", "un modello di funzione caricato da un modulo IFC è stato analizzato erroneamente come %nd", - "non è stato possibile caricare un riferimento all'entità IFC nel modulo %sq", + "failed to load an IFC entity reference in %m", "dalla partizione %sq elemento %u1 (posizione file %u2, posizione relativa %u3)", "gli indicatori concatenati non sono consentiti per un tipo di classe con un distruttore non banale", "una dichiarazione di specializzazione esplicita non può essere una dichiarazione Friend", @@ -3506,9 +3506,9 @@ null, "non è possibile valutare un inizializzatore per un membro di matrice flessibile", "un inizializzatore di campo di bit predefinito è una funzionalità di C++20", - "troppi argomenti nell'elenco degli argomenti del modello nel modulo %sq", + "too many arguments in template argument list in %m", "rilevato per l'argomento del modello rappresentato dall’elemento %sq %u1 (posizione file %u2, posizione relativa %u3)", - "argomenti insufficienti nell'elenco degli argomenti del modello nel modulo %sq", + "too few arguments in template argument list in %m", "rilevato durante l'elaborazione dell'elenco di argomenti del modello rappresentato dall’elemento %sq %u1 (posizione file %u2, posizione relativa %u3)", "la conversione dal tipo di enumerazione con ambito %t non è conforme allo standard", "la deallocazione non corrisponde al tipo di allocazione (una è per una matrice e l'altra no)", @@ -3517,8 +3517,8 @@ "__make_unsigned è compatibile solo con i tipi di numero intero ed enumerazione non booleani", "il nome intrinseco %sq verrà trattato come un identificatore ordinario a partire da qui", "accesso a un sotto-oggetto non inizializzato all'indice %d", - "numero di riga IFC (%u1) che causa l’overflow del valore massimo consentito (%u2) del modulo %sq", - "il modulo %sq1 ha richiesto l'elemento %u della partizione %sq2. Questa posizione del file supera il valore massimo rappresentabile", + "IFC line number (%u1) overflows maximum allowed value (%u2) %m", + "%m requested element %u of partition %sq, this file position exceeds the maximum representable value", "numero errato di argomenti", "vincolo sul candidato %n non soddisfatto", "il numero di parametri di %n non corrisponde alla chiamata", @@ -3551,7 +3551,7 @@ "Non è possibile elaborare il file IFC %sq", "la versione IFC %u1.%u2 non è supportata", "l'architettura IFC %sq non è compatibile con l'architettura di destinazione corrente", - "il modulo %sq1 richiede l'indice %u di una partizione non supportata corrispondente a %sq2", + "%m requests index %u of an unsupported partition corresponding to %sq", "il numero di parametro %d di %n ha il tipo %t che non può essere completato", "il numero di parametro %d di %n ha il tipo incompleto %t", "il numero di parametro %d di %n ha il tipo astratto %t", @@ -3570,7 +3570,7 @@ "reflection non valida (%r) per la splice dell'espressione", "%n è già stato definito (definizione precedente %p)", "Oggetto infovec non inizializzato", - "value_of tipo %t1 non è compatibile con la reflection specificata (entità con tipo %t2)", + "extract of type %t1 is not compatible with the given reflection (entity with type %t2)", "la reflection di un set di overload non è attualmente consentita", "questo intrinseco richiede una reflection per un'istanza del modello", "tipi incompatibili %t1 e %t2 per l'operatore", @@ -3601,6 +3601,21 @@ "Non è possibile creare un'unità di intestazione per l'unità di conversione corrente", "l'unità di conversione corrente utilizza una o più funzionalità che attualmente non possono essere scritte in un'unità di intestazione", "'explicit(bool)' è una funzionalità di C++20", + "first argument must be a pointer to integer, enum, or supported floating-point type", + "C++ modules cannot be used when compiling multiple translation units", + "C++ modules cannot be used with the pre-C++11 \"export\" feature", + "the IFC token %sq is not supported", + "the \"pass_object_size\" attribute is only valid on parameters of function declarations", + "the argument of the %sq attribute %d1 must be a value between 0 and %d2", + "a ref-qualifier here is ignored", + "invalid NEON vector element type %t", + "invalid NEON polyvector element type %t", + "invalid scalable vector element type %t", + "invalid number of tuple elements for scalable vector type", + "a NEON vector or polyvector must be either 64 or 128 bits wide", + "sizeless type %t is not allowed", + "an object of the sizeless type %t cannot be value-initialized", + "unexpected null declaration index found as part of scope %u", "è necessario specificare un nome modulo per la mappa dei file del modulo che fa riferimento al file %sq", "è stato ricevuto un valore di indice Null in cui era previsto un nodo nella partizione IFC %sq", "%nd non può avere il tipo %t", @@ -3629,5 +3644,17 @@ "l'attributo 'ext_vector_type' si applica solo ai tipi bool, integer o a virgola mobile", "non sono consentiti più indicatori nella stessa unione", "messaggio di test", - "la versione di Microsoft da emulare deve essere almeno 1943 per usare '--ms_c++23'" -] + "la versione di Microsoft da emulare deve essere almeno 1943 per usare '--ms_c++23'", + "invalid current working directory: %s", + "\"cleanup\" attribute within a constexpr function is not currently supported", + "the \"assume\" attribute can only apply to a null statement", + "assumption failed", + "variable templates are a C++14 feature", + "cannot take the address of a function with a parameter declared with the \"pass_object_size\" attribute", + "all arguments must have the same type", + "the final comparison was %s1 %s2 %s3", + "too many arguments for attribute %sq", + "mantissa string does not contain a valid number", + "floating-point error during constant evaluation", + "inheriting constructor %n ignored for copy/move-like operation" +] \ No newline at end of file diff --git a/Extension/bin/messages/ja/messages.json b/Extension/bin/messages/ja/messages.json index 076f95c69..a21200b9b 100644 --- a/Extension/bin/messages/ja/messages.json +++ b/Extension/bin/messages/ja/messages.json @@ -163,7 +163,7 @@ "認識されない #pragma", null, "一時ファイル %sq を開けませんでした: %s2", - "一時ファイルのディレクトリの名前が長すぎます (%sq)", + null, "関数呼び出しの引数が少なすぎます", "無効な浮動小数点定数", "型 %t1 の引数は型 %t2 のパラメーターと互換性がありません", @@ -1828,7 +1828,7 @@ "'auto' 関数には後続の戻り値の型が必要です", "メンバー テンプレートは純粋指定子を持つことはできません", "リテラル文字列が長すぎます -- 超過した文字は無視されました", - "nullptr キーワードを制御するためのオプションは C++ をコンパイルするときにのみ使用できます", + null, "std::nullptr_t がブール型に変換されました", null, null, @@ -3230,8 +3230,8 @@ "もう一方の一致は %t です", "ここで使用されている 'availability' 属性は無視されます", "範囲ベースの 'for' ステートメントにある C++20 形式の初期化子ステートメントは、このモードでは非標準です", - "co_await は範囲ベースの for ステートメントにのみ適用できます", - "範囲ベースの 'for' ループの範囲の種類を推測できません", + "co_await can only apply to a range-based \"for\" statement", + "cannot deduce type of range in range-based \"for\" statement", "インライン変数は C++17 の機能です", "destroying operator delete には、最初のパラメーターとして %t が必要です", "destroying operator delete に、std::size_t および std::align_val_t 以外のパラメーターを指定することはできません", @@ -3272,17 +3272,17 @@ "%sq は、インポート可能なヘッダーではありません", "名前が指定されていないモジュールをインポートすることはできません", "モジュールはそれ自体に対するインターフェイス依存関係を持つことはできません", - "モジュール %sq は既にインポートされています", + "%m has already been imported", "モジュール ファイル", "モジュール %sq のモジュール ファイルが見つかりませんでした", "モジュール ファイル %sq をインポートできませんでした", - "%s1 が必要ですが、%s2 が見つかりました", + null, "モジュール ファイル %sq を開くとき", "不明なパーティション名 %sq", - "不明なモジュール ファイル", - "インポート可能なヘッダー モジュール ファイル", - "EDG モジュール ファイル", - "IFC モジュール ファイル", + null, + null, + null, + null, "予期しないモジュール ファイル", "第 2 オペランド %t2 の型は、%t1 と同じサイズである必要があります", "型は普通にコピー可能である必要があります", @@ -3347,7 +3347,7 @@ "インポートするヘッダー '%s' が見つかりません", "モジュール ファイル リスト内の複数のファイルが '%s' と一致しています", "'%s' に対して見つかったモジュール ファイルは別のモジュール用です", - "あらゆる種類のモジュール ファイル", + null, "モジュール ファイルを読み取れません", "現在のオプションで char8_t 型がサポートされていないので、ビルトイン関数を使用できません", null, @@ -3368,7 +3368,7 @@ "このコンパイル ターゲットのビット レイアウトを解釈できません。", "IFC 演算子 %sq に対応する演算子がありません", "IFC 呼び出し規則 %sq に対応する呼び出し規則がありません", - "モジュール %sq にはサポートされていないコンストラクトが含まれています", + "%m contains unsupported constructs", "サポートされていない IFC コンストラクト: %sq", "__is_signed はこのポイントからキーワードではなくなりました", "配列の次元には定数の符号なし整数値を指定する必要があります", @@ -3417,35 +3417,35 @@ "このモードでは、'if consteval' と 'if not consteval' は標準ではありません", "ラムダ宣言子での '()' の省略は、このモードでは非標準です", "ラムダ パラメーター リストが省略されている場合、末尾の Requires 句は許可されません", - "モジュール %sq 無効なパーティションが要求されました", - "モジュール %sq1 個の未定義のパーティション (%sq2 と推定) が要求されました", + "%m invalid partition requested", + "%m undefined partition (believed to be %sq) requested", null, null, - "モジュール %sq1 ファイル位置 %u1 (相対位置 %u2) がパーティション %sq2 に対して要求されました - これはそのパーティションの終点をオーバーフローしています", - "モジュール %sq1 ファイル位置 %u1 (相対位置 %u2) がパーティション %sq2 に対して要求されました - これはそのパーティション要素の整列誤りです", + "%m file position %u1 (relative position %u2) requested for partition %sq - which overflows the end of its partition", + "%m file position %u1 (relative position %u2) requested for partition %sq - which is misaligned with its partitions elements", "サブフィールド %sq から (ノード %u への相対位置)", "パーティション元 %sq 要素 %u1 (ファイル位置 %u2、相対位置 %u3)", "ラムダの属性は C++23 機能です", "識別子 %sq は、%p に表示される視覚的に類似したものと混同される可能性があります", "このコメントには、不審な Unicode 書式設定制御文字が含まれています", "この文字列には、予期しない実行時の動作を引き起こす可能性のある Unicode 形式の制御文字が含まれています", - "%d1 個の抑制された警告が、モジュール %sq1 の処理中に発生しました", - "%d1 個の抑制された警告が、モジュール %sq1 の処理中に発生しました", - "%d1 個の抑制されたエラーが、モジュール %sq1 の処理中に発生しました", - "%d1 個の抑制されたエラーが、モジュール %sq1 の処理中に発生しました", + "%u suppressed warning was encountered while processing %m", + "%u suppressed warnings were encountered while processing %m", + "%u suppressed error was encountered while processing %m", + "%u suppressed errors were encountered while processing %m", "含む", "抑制", "仮想メンバー関数は、明示的な 'this' パラメーターを持つことはできません", "明示的な 'this' 関数のアドレスの取得には修飾名が必要です", "明示的な 'this' 関数のアドレスの形成には '&' 演算子が必要です", "文字列リテラルを柔軟な配列メンバーを初期化するのに使用することはできません", - "関数 %sq の定義の IFC 表現が無効です", + "the IFC representation of the definition of function %sq is invalid", null, "パラメーターの指定に UniLevel IFC グラフが使用されませんでした", "%u1 個のパラメーターが IFC パラメーター定義グラフで指定されましたが、IFC 宣言では %u2 個のパラメーターが指定されました", "%u1 個のパラメーターが IFC パラメーター定義グラフで指定されましたが、IFC 宣言では %u2 個のパラメーターが指定されました", "%u1 個のパラメーターが IFC パラメーター定義グラフで指定されましたが、IFC 宣言では %u2 個のパラメーターが指定されました", - "関数 %sq の定義の IFC 表現が見つかりません", + "the IFC representation of the definition of function %sq is missing", "関数修飾子はメンバー テンプレート宣言には適用されません", "メンバーの選択に含まれる、入れ子になった匿名のタイプが多すぎます", "オペランド間に共通型がありません", @@ -3467,7 +3467,7 @@ "不完全な列挙型を持つビット フィールド、または無効な基本型を持つ不透明な列挙のいずれかです", "IFC パーティション %sq2 へのインデックスを使用して、IFC パーティション %sq から要素を構築しようとしました", "パーティション %sq は、%u2 が予期されたときにエントリ サイズを %u1 として指定されました", - "モジュール %sq1 の処理中に予期しない IFC 要件が発生しました", + "an unexpected IFC requirement was encountered while processing %m", "条件が行 %d で失敗しました (%s1: %sq2)", "アトミック制約は、それ自体に依存します", "'noreturn' 関数に void 以外の戻り値の型があります", @@ -3475,9 +3475,9 @@ "クラス外のメンバー テンプレートの定義では、既定のテンプレート引数を指定できません", "エンティティの再構築中に無効な IFC 識別子名 %sq が見つかりました", null, - "モジュール %sq は無効な並べ替え値です", + "%m invalid sort value", "IFC モジュールから読み込まれた関数テンプレートが誤って %nd として解析されました", - "モジュール %sq で IFC エンティティ参照を読み込めませんでした", + "failed to load an IFC entity reference in %m", "パーティション元 %sq 要素 %u1 (ファイル位置 %u2、相対位置 %u3)", "非単純デストラクターを持つクラス型では、チェーンされた指定子は許可されていません", "明示的特殊化宣言はフレンド宣言にできない場合があります", @@ -3506,9 +3506,9 @@ null, "柔軟な配列メンバーの初期化子を評価できません", "既定のビット フィールド初期化子は C++20 機能です", - "モジュール %sq 内のテンプレート引数リストの引数が多すぎます", + "too many arguments in template argument list in %m", "%sq 要素 %u1 (ファイル位置 %u2、相対位置 %u3) で表されるテンプレート引数に対して検出されました", - "モジュール %sq 内のテンプレート引数リストの引数が少なすぎます", + "too few arguments in template argument list in %m", "%sq 要素 %u1 (ファイル位置 %u2,、相対位置 %u3) で表されるテンプレート引数リストの処理中に検出されました", "スコープを持つ列挙型 %t からの変換は非標準です", "割り当て解除の種類が一致割り当ての種類と一致しません (一方が配列用で、もう一方が配列用ではありません)", @@ -3517,8 +3517,8 @@ "__make_unsigned はブール型以外の整数型および列挙型とのみ互換性があります", "組み込み名前 %sq は、ここから通常の識別子として扱われます", "インデックス %d にある初期化されていないサブオブジェクトへのアクセス", - "IFC 行番号 (%u1) が許可された最大値 (%u2) モジュール %sq をオーバーフローしています", - "モジュール %sq1 が要素 %u (パーティション %sq2) を要求しました。このファイルの位置は、表現可能な最大値を超えています", + "IFC line number (%u1) overflows maximum allowed value (%u2) %m", + "%m requested element %u of partition %sq, this file position exceeds the maximum representable value", "引数の数が正しくありません", "候補に対する制約 %n が満たされていません", "%n のパラメーター数が呼び出しと一致しません", @@ -3551,7 +3551,7 @@ "IFC ファイル %sq を処理できません", "IFC バージョン %u1.%u2 はサポートされていません", "IFC アーキテクチャ %sq は現在のターゲット アーキテクチャと互換性がありません", - "モジュール %sq1 は、インデックス %u (%sq2 に対応するサポートされていないパーティションのインデックス) を要求します。", + "%m requests index %u of an unsupported partition corresponding to %sq", "%n のパラメーター番号 %d に、完了できない型 %t があります", "%n のパラメーター番号 %d に不完全な型 %t があります", "%n のパラメーター番号 %d は抽象型 %t", @@ -3570,7 +3570,7 @@ "式の継ぎ目のリフレクション (%r) が正しくありません", "%n は既に定義されています (前の定義 %p)", "infovec オブジェクトが初期化されていません", - "value_of 型 %t1 は、指定されたリフレクション (型 %t2 のエンティティ) と互換性がありません", + "extract of type %t1 is not compatible with the given reflection (entity with type %t2)", "オーバーロード セットのリフレクションは現在許可されていません", "この組み込み関数には、テンプレート インスタンスのリフレクションが必要です", "演算子の型 %t1 と %t2 に互換性がありません", @@ -3601,6 +3601,21 @@ "現在の翻訳単位のヘッダー ユニットを作成できませんでした", "現在の翻訳単位は、現在ヘッダー ユニットに書き込むことができない 1 つ以上の機能を使用します", "'explicit(bool)' は C++20 機能です", + "first argument must be a pointer to integer, enum, or supported floating-point type", + "C++ modules cannot be used when compiling multiple translation units", + "C++ modules cannot be used with the pre-C++11 \"export\" feature", + "the IFC token %sq is not supported", + "the \"pass_object_size\" attribute is only valid on parameters of function declarations", + "the argument of the %sq attribute %d1 must be a value between 0 and %d2", + "a ref-qualifier here is ignored", + "invalid NEON vector element type %t", + "invalid NEON polyvector element type %t", + "invalid scalable vector element type %t", + "invalid number of tuple elements for scalable vector type", + "a NEON vector or polyvector must be either 64 or 128 bits wide", + "sizeless type %t is not allowed", + "an object of the sizeless type %t cannot be value-initialized", + "unexpected null declaration index found as part of scope %u", "ファイル %sq を参照するモジュール ファイル マップにモジュール名を指定する必要があります", "IFC パーティション %sq のノードが必要な場所で null インデックス値を受け取りました", "%nd に型 %t を指定することはできません", @@ -3629,5 +3644,17 @@ "'ext_vector_type' 属性は、整数型または浮動小数点型にのみ適用できます", "複数の指定子を同じ共用体にすることはできません", "テスト メッセージ", - "'--ms_c++23' を使用するには、エミュレートされている Microsoft のバージョンが 1943 以上である必要があります" -] + "'--ms_c++23' を使用するには、エミュレートされている Microsoft のバージョンが 1943 以上である必要があります", + "invalid current working directory: %s", + "\"cleanup\" attribute within a constexpr function is not currently supported", + "the \"assume\" attribute can only apply to a null statement", + "assumption failed", + "variable templates are a C++14 feature", + "cannot take the address of a function with a parameter declared with the \"pass_object_size\" attribute", + "all arguments must have the same type", + "the final comparison was %s1 %s2 %s3", + "too many arguments for attribute %sq", + "mantissa string does not contain a valid number", + "floating-point error during constant evaluation", + "inheriting constructor %n ignored for copy/move-like operation" +] \ No newline at end of file diff --git a/Extension/bin/messages/ko/messages.json b/Extension/bin/messages/ko/messages.json index 5f8895cb1..f0963ad31 100644 --- a/Extension/bin/messages/ko/messages.json +++ b/Extension/bin/messages/ko/messages.json @@ -163,7 +163,7 @@ "인식할 수 없는 #pragma", null, "임시 파일 %sq을(를) 열 수 없습니다. %s2", - "임시 파일의 디렉터리 이름이 너무 깁니다(%sq).", + null, "함수 호출에 인수가 너무 적습니다.", "부동 소수점 상수가 잘못되었습니다.", "%t1 형식의 인수가 %t2 형식의 매개 변수와 호환되지 않습니다.", @@ -1828,7 +1828,7 @@ "'auto' 함수에는 후행 반환 형식이 필요합니다.", "멤버 템플릿에는 순수 지정자를 사용할 수 없습니다.", "문자열 리터럴이 너무 깁니다. 초과된 문자가 무시되었습니다.", - "nullptr 키워드를 제어하는 옵션은 C++를 컴파일할 경우에만 사용할 수 있습니다.", + null, "std::nullptr_t가 bool로 변환되었습니다.", null, null, @@ -3230,8 +3230,8 @@ "다른 일치 항목은 %t입니다.", "여기에 사용된 'availability' 특성은 무시됩니다.", "범위 기반의 'for' 문에서 C++20 스타일 이니셜라이저 문은 이 모드에서 표준이 아닙니다.", - "co_await는 범위 기반의 for 문에만 적용할 수 있습니다.", - "범위 기반의 'for' 루프에서 범위 형식을 추론할 수 없습니다.", + "co_await can only apply to a range-based \"for\" statement", + "cannot deduce type of range in range-based \"for\" statement", "인라인 변수는 C++17 기능입니다.", "destroying operator delete에는 첫 번째 매개 변수로 %t이(가) 필요합니다.", "destroying operator delete는 std::size_t 및 std::align_val_t 이외의 매개 변수를 가질 수 없습니다.", @@ -3272,17 +3272,17 @@ "%sq은(는) 가져올 수 있는 헤더가 아닙니다.", "이름이 없는 모듈을 가져올 수 없습니다.", "모듈은 자신에 대한 인터페이스 종속성을 포함할 수 없습니다.", - "%sq 모듈을 이미 가져왔습니다.", + "%m has already been imported", "모듈 파일", "모듈 %sq의 모듈 파일을 찾을 수 없습니다.", "모듈 파일 %sq을(를) 가져올 수 없습니다.", - "%s1이(가) 필요한데, %s2이(가) 발견되었습니다.", + null, "%sq 모듈 파일을 열 때", "알 수 없는 파티션 이름 %sq", - "알 수 없는 모듈 파일", - "가져올 수 있는 헤더 모듈 파일", - "EDG 모듈 파일", - "IFC 모듈 파일", + null, + null, + null, + null, "예기치 않은 모듈 파일", "두 번째 피연산자 %t2의 형식은 %t1과(와) 크기가 같아야 합니다.", "형식은 일반적으로 복사할 수 있어야 합니다.", @@ -3347,7 +3347,7 @@ "가져올 '%s' 헤더를 찾을 수 없습니다.", "모듈 파일 목록에 있는 두 개 이상의 파일이 '%s'과(와) 일치합니다.", "'%s'에 대해 찾은 모듈 파일이 다른 모듈에 대한 것입니다.", - "모든 종류의 모듈 파일", + null, "모듈 파일을 읽을 수 없음", "char8_t 형식이 현재 옵션에서 지원되지 않기 때문에 기본 제공 함수를 사용할 수 없습니다.", null, @@ -3368,7 +3368,7 @@ "이 컴파일 대상의 비트 레이아웃을 해석할 수 없음", "IFC 연산자 %sq에 해당하는 연산자가 없음", "IFC 호출 규칙 %sq에 해당하는 호출 규칙이 없음", - "모듈 %sq에 지원되지 않는 구문이 포함되어 있음", + "%m contains unsupported constructs", "지원되지 않는 IFC 구문: %sq", "__is_signed는 이 시점부터 더 이상 키워드가 아님", "배열 차원에는 상수인 부호 없는 정수 값이 있어야 함", @@ -3417,35 +3417,35 @@ "'if consteval' 및 'if not consteval'은 이 모드에서 표준이 아닙니다.", "람다 선언자에서 '()'를 생략하는 것은 이 모드에서 표준이 아닙니다.", "람다 매개 변수 목록을 생략하면 후행-requires 절이 허용되지 않습니다.", - "모듈 %sq 잘못된 파티션이 요청됨", - "모듈 %sq1 정의되지 않은 파티션(%sq2로 추정됨) 요청됨", + "%m invalid partition requested", + "%m undefined partition (believed to be %sq) requested", null, null, - "모듈 %sq1 파일 위치 %u1(상대 위치 %u2)이 파티션 %sq2에 대해 요청됨 - 해당 파티션의 끝을 오버플로함", - "모듈 %sq1 파일 위치 %u1(상대 위치 %u2)이(가) 파티션 요소가 잘못 정렬된 파티션 %sq2에 대해 요청되었습니다.", + "%m file position %u1 (relative position %u2) requested for partition %sq - which overflows the end of its partition", + "%m file position %u1 (relative position %u2) requested for partition %sq - which is misaligned with its partitions elements", "하위 필드 %sq(노드 %u에 대한 상대 위치)에서", "파티션 %sq 요소 %u1에서(파일 위치 %u2, 상대 위치 %u3)", "람다의 특성은 C++23 기능입니다.", "식별자 %sq은(는) 시각적으로 유사한 식별자와 혼동될 수 있습니다. %p", "이 주석에는 의심스러운 유니코드 서식 지정 제어 문자가 포함되어 있습니다.", "이 문자열에는 예기치 않은 런타임 동작이 발생할 수 있는 유니코드 서식 지정 컨트롤 문자가 포함되어 있습니다.", - "%d1 모듈 %sq1을(를) 처리하는 동안 표시되지 않는 경고가 발생했습니다.", - "%d1 모듈 %sq1을(를) 처리하는 동안 표시되지 않는 경고가 발생했습니다.", - "%d1 모듈 %sq1을(를) 처리하는 동안 오류가 표시되지 않았습니다.", - "%d1 모듈 %sq1을(를) 처리하는 동안 오류가 표시되지 않았습니다.", + "%u suppressed warning was encountered while processing %m", + "%u suppressed warnings were encountered while processing %m", + "%u suppressed error was encountered while processing %m", + "%u suppressed errors were encountered while processing %m", "포함", "표시 안 함", "가상 멤버 함수에는 명시적 'this' 매개 변수를 사용할 수 없습니다.", "명시적 'this' 함수의 주소를 사용하려면 정규화된 이름이 필요합니다.", "명시적 'this' 함수의 주소를 구성하려면 '&' 연산자가 필요합니다.", "가변 배열 멤버를 초기화하는 데 문자열 리터럴을 사용할 수 없습니다.", - "함수 %sq의 정의에 대한 IFC 표현이 잘못되었습니다.", + "the IFC representation of the definition of function %sq is invalid", null, "매개 변수를 지정하는 데 UniLevel IFC 차트가 사용되지 않았습니다.", "%u1 매개 변수는 IFC 매개 변수 정의 차트에 의해 지정되었지만 %u2 매개 변수는 IFC 선언에 의해 지정되었습니다.", "%u1 매개 변수는 IFC 매개 변수 정의 차트에 의해 지정되었지만 %u2 매개 변수는 IFC 선언에 의해 지정되었습니다.", "%u1 매개 변수는 IFC 매개 변수 정의 차트에 의해 지정되었지만 %u2 매개 변수는 IFC 선언에 의해 지정되었습니다.", - "%sq 함수 정의의 IFC 표현이 없습니다.", + "the IFC representation of the definition of function %sq is missing", "함수 한정자는 멤버 템플릿 선언에 적용되지 않습니다.", "멤버 선택에 너무 많은 중첩된 익명 형식이 포함됩니다.", "피연산자 사이에 공통 형식이 없습니다.", @@ -3467,7 +3467,7 @@ "불완전한 열거형 형식이 있는 비트 필드 또는 잘못된 기본 형식이 있는 불투명 열거형", "IFC 파티션 %sq2에 대한 인덱스를 사용하여 IFC 파티션 %sq에서 요소를 구성하려고 했습니다.", "파티션 %sq에서 %u2이(가) 필요한 경우 해당 항목 크기를 %u1로 지정했습니다.", - "모듈 %sq1을(를) 처리하는 동안 예기치 않은 IFC 요구 사항이 발생했습니다.", + "an unexpected IFC requirement was encountered while processing %m", "%d행(%s1)에서 조건 실패: %sq2", "원자성 제약 조건은 자체에 따라 달라집니다.", "'noreturn' 함수에 void가 아닌 반환 형식이 있습니다.", @@ -3475,9 +3475,9 @@ "클래스 외부의 멤버 템플릿 정의에 기본 템플릿 인수를 지정할 수 없습니다.", "엔터티를 재구성하는 동안 %sq라는 잘못된 IFC 식별자를 발견했습니다.", null, - "모듈 %sq 잘못된 정렬 값", + "%m invalid sort value", "IFC 모듈에서 로드된 함수 템플릿이 %nd(으)로 잘못 구문 분석되었습니다.", - "모듈 %sq에서 IFC 엔터티 참조를 로드하지 못했습니다.", + "failed to load an IFC entity reference in %m", "파티션 %sq 요소 %u1에서(파일 위치 %u2, 상대 위치 %u3)", "비자명 소멸자가 있는 클래스 형식에는 연결된 지정자를 사용할 수 없습니다.", "명시적 전문화 선언은 friend 선언이 아닐 수 있습니다.", @@ -3506,9 +3506,9 @@ null, "유연한 배열 멤버에 대한 이니셜라이저를 평가할 수 없습니다.", "기본 비트 필드 이니셜라이저는 C++20 기능입니다.", - "%sq 모듈의 템플릿 인수 목록에 인수가 너무 많습니다.", + "too many arguments in template argument list in %m", "%sq 요소 %u1(파일 위치 %u2, 상대 위치 %u3)이 나타내는 템플릿 인수에 대해 감지됨", - "%sq 모듈의 템플릿 인수 목록에 인수가 너무 적습니다.", + "too few arguments in template argument list in %m", "%sq 요소 %u1(파일 위치 %u2, 상대 위치 %u3)이 나타내는 템플릿 인수 목록을 처리하는 동안 감지되었습니다.", "범위가 지정된 열거형 형식 %t에서의 변환이 표준이 아닙니다.", "할당 취소가 할당 종류와 일치하지 않습니다(하나는 배열용이고 다른 할당 종류는 일치하지 않음).", @@ -3517,8 +3517,8 @@ "__make_unsigned 부울이 아닌 정수 및 열거형 형식과만 호환됩니다.", "내장 이름 %sq은(는) 여기에서 일반 식별자로 처리됩니다.", "인덱스 %d에서 초기화되지 않은 하위 개체에 대한 액세스", - "IFC 라인 번호(%u1)가 최대 허용 값(%u2) 모듈 %sq를 초과했습니다.", - "%sq1 모듈이 %u 요소(파티션 %sq2)를 요청했습니다. 이 파일 위치는 최대 표현 가능 값을 초과합니다.", + "IFC line number (%u1) overflows maximum allowed value (%u2) %m", + "%m requested element %u of partition %sq, this file position exceeds the maximum representable value", "잘못된 인수 수", "후보 %n에 대한 제약 조건이 충족되지 않음", "%n의 매개 변수 수가 호출과 일치하지 않습니다.", @@ -3551,7 +3551,7 @@ "IFC 파일 %sq을(를) 처리할 수 없습니다.", "IFC 버전 %u1.%u2은(는) 지원되지 않습니다.", "IFC 아키텍처 %sq이(가) 현재 대상 아키텍처와 호환되지 않습니다.", - "모듈 %sq1이(가) 지원되지 않는 파티션의 인덱스 %u을(를) 요청합니다. 이 파티션은 %sq2에 해당합니다.", + "%m requests index %u of an unsupported partition corresponding to %sq", "%n의 매개 변수 번호 %d에는 완료할 수 없는 형식 %t이 있습니다.", "매개 변수 번호 %d(%n 중)이 불완전한 형식 %t입니다.", "매개 변수 번호 %d(%n 중)에는 추상 형식 %t이(가) 있습니다.", @@ -3570,7 +3570,7 @@ "식 스플라이스에 대한 잘못된 리플렉션(%r)", "%n이(가) 이미 정의되었습니다(이전 정의 %p).", "infovec 개체가 초기화되지 않음", - "value_of 형식 %t1이(가) 지정된 리플렉션(%t2 형식의 엔터티)과 호환되지 않습니다.", + "extract of type %t1 is not compatible with the given reflection (entity with type %t2)", "오버로드 집합을 반영하는 것은 현재 허용되지 않습니다.", "이 내장 함수에는 템플릿 인스턴스에 대한 리플렉션이 필요합니다.", "연산자에 대해 호환되지 않는 형식 %t1 및 %t2", @@ -3601,6 +3601,21 @@ "현재 변환 단위에 대한 헤더 단위를 만들 수 없습니다.", "현재 변환 단위는 헤더 단위에 현재 쓸 수 없는 하나 이상의 기능을 사용합니다.", "'explicit(bool)'는 C++20 기능입니다.", + "first argument must be a pointer to integer, enum, or supported floating-point type", + "C++ modules cannot be used when compiling multiple translation units", + "C++ modules cannot be used with the pre-C++11 \"export\" feature", + "the IFC token %sq is not supported", + "the \"pass_object_size\" attribute is only valid on parameters of function declarations", + "the argument of the %sq attribute %d1 must be a value between 0 and %d2", + "a ref-qualifier here is ignored", + "invalid NEON vector element type %t", + "invalid NEON polyvector element type %t", + "invalid scalable vector element type %t", + "invalid number of tuple elements for scalable vector type", + "a NEON vector or polyvector must be either 64 or 128 bits wide", + "sizeless type %t is not allowed", + "an object of the sizeless type %t cannot be value-initialized", + "unexpected null declaration index found as part of scope %u", "%sq 파일을 참조하는 모듈 파일 맵에 대한 모듈 이름을 지정해야 합니다.", "IFC 파티션 %sq 노드가 필요한 곳에 null 인덱스 값을 받았습니다.", "%nd은(는) %t 형식을 가질 수 없습니다", @@ -3629,5 +3644,17 @@ "'ext_vector_type' 특성은 부울, 정수 또는 부동 소수점 형식에만 적용됩니다", "동일한 공용 구조체에 여러 지정자를 사용할 수 없습니다.", "테스트 메시지", - "에뮬레이트되는 Microsoft 버전이 1943 이상이어야 '--ms_c++23'을 사용할 수 있습니다." -] + "에뮬레이트되는 Microsoft 버전이 1943 이상이어야 '--ms_c++23'을 사용할 수 있습니다.", + "invalid current working directory: %s", + "\"cleanup\" attribute within a constexpr function is not currently supported", + "the \"assume\" attribute can only apply to a null statement", + "assumption failed", + "variable templates are a C++14 feature", + "cannot take the address of a function with a parameter declared with the \"pass_object_size\" attribute", + "all arguments must have the same type", + "the final comparison was %s1 %s2 %s3", + "too many arguments for attribute %sq", + "mantissa string does not contain a valid number", + "floating-point error during constant evaluation", + "inheriting constructor %n ignored for copy/move-like operation" +] \ No newline at end of file diff --git a/Extension/bin/messages/pl/messages.json b/Extension/bin/messages/pl/messages.json index c5e42b82b..7b50b0380 100644 --- a/Extension/bin/messages/pl/messages.json +++ b/Extension/bin/messages/pl/messages.json @@ -163,7 +163,7 @@ "nierozpoznana dyrektywa #pragma", null, "nie można otworzyć pliku tymczasowego %sq: %s2", - "nazwa katalogu plików tymczasowych jest za długa (%sq)", + null, "za mało argumentów w wywołaniu funkcji", "nieprawidłowa stała zmiennoprzecinkowa", "argument typu %t1 jest niezgodny z parametrem typu %t2", @@ -1828,7 +1828,7 @@ "funkcja „auto” wymaga końcowego typu zwracanego", "szablon składowej nie może mieć czystego specyfikatora", "zbyt długi literał ciągu — zignorowano nadmiarowe znaki", - "opcja kontrolująca słowo kluczowe nullptr może być używana tylko podczas kompilowania kodu C++", + null, "typ std::nullptr_t skonwertowano na typ logiczny", null, null, @@ -3230,8 +3230,8 @@ "inne dopasowanie jest %t", "użyty tutaj atrybut „availability” jest ignorowany", "Instrukcja inicjatora w stylu języka C++20 w instrukcji „for” opartej na zakresie jest niestandardowa w tym trybie", - "element co_await można zastosować tylko do instrukcji for opartej na zakresie", - "nie można wywnioskować typu zakresu w pętli „for” opartej na zakresie.", + "co_await can only apply to a range-based \"for\" statement", + "cannot deduce type of range in range-based \"for\" statement", "zmienne wbudowane to funkcja języka C++ 17", "niszczący operator delete wymaga elementu %t jako pierwszego parametru", "niszczący operator delete nie może mieć parametrów innych niż std::size_t i std::align_val_t", @@ -3272,17 +3272,17 @@ "%sq nie jest nagłówkiem, który można zaimportować", "nie można zaimportować modułu bez nazwy", "moduł nie może mieć zależności interfejsu od samego siebie", - "moduł %sq został już zaimportowany", + "%m has already been imported", "plik modułu", "nie można odnaleźć pliku modułu dla modułu %sq", "nie można zaimportować pliku modułu %sq", - "oczekiwano elementu %s1, zamiast niego znaleziono element %s2", + null, "podczas otwierania pliku modułu %sq", "nieznana nazwa partycji %sq", - "nieznany plik modułu", - "plik modułu z importowalnym nagłówkiem", - "plik modułu EDG", - "plik modułu IFC", + null, + null, + null, + null, "nieoczekiwany plik modułu", "typ drugiego operandu %t2 musi mieć taki sam rozmiar jak element %t1", "typ musi być możliwy do skopiowania w prosty sposób", @@ -3347,7 +3347,7 @@ "nie można odnaleźć nagłówka „%s” do zaimportowania", "więcej niż jeden plik na liście plików modułu pasuje do elementu „%s”", "plik modułu znaleziony dla elementu „%s” jest dla innego modułu", - "dowolny rodzaj pliku modułu", + null, "nie można odczytać pliku modułu", "wbudowana funkcja jest niedostępna, ponieważ typ char8_t nie jest obsługiwany z bieżącymi opcjami", null, @@ -3368,7 +3368,7 @@ "nie można zinterpretować układu bitowego dla tego elementu docelowego kompilacji", "brak odpowiedniego operatora dla operatora IFC %sq", "brak odpowiedniej konwencji wywoływania dla konwencji wywoływania IFC %sq", - "moduł %sq zawiera nieobsługiwane konstrukcje", + "%m contains unsupported constructs", "nieobsługiwana konstrukcja IFC: %sq", "Od tego punktu __is_signed nie jest już słowem kluczowym", "wymiar tablicy musi mieć stałą wartość całkowitą bez znaku", @@ -3417,35 +3417,35 @@ "Instrukcje „if consteval” i „if not consteval” nie są standardowe w tym trybie", "pominięcie elementu „()” w deklaratorze lambda jest niestandardowe w tym trybie", "klauzula trailing-requires-clause jest niedozwolona, gdy lista parametrów lambda zostanie pominięta", - "zażądano nieprawidłowej partycji modułu %sq", - "zażądano niezdefiniowanej partycji modułu %sq1 (prawdopodobnie %sq2)", + "%m invalid partition requested", + "%m undefined partition (believed to be %sq) requested", null, null, - "zażądano modułu %sq1 pozycji pliku %u1 (pozycja względna %u2) dla partycji %sq2, która powoduje przepełnienie końca partycji", - "zażądano modułu %sq1 pozycji pliku %u1 (pozycja względna %u2) dla partycji %sq2, która jest nieprawidłowo wyrównana do jej elementów partycji", + "%m file position %u1 (relative position %u2) requested for partition %sq - which overflows the end of its partition", + "%m file position %u1 (relative position %u2) requested for partition %sq - which is misaligned with its partitions elements", "z podrzędnego pola %sq (względne położenie w stosunku do węzła %u)", "z partycji %sq elementu %u1 (pozycja pliku %u2, względna pozycja %u3)", "atrybuty w wyrażeniach lambda są funkcją języka C++23", "identyfikator %sq można pomylić z widocznym wizualnie identyfikatorem %p", "ten komentarz zawiera podejrzane znaki kontrolne formatowania Unicode", "ten ciąg zawiera znaki kontrolne formatowania Unicode, które mogą spowodować nieoczekiwane zachowanie środowiska uruchomieniowego", - "Znaleziono pominięte ostrzeżenie %d1 podczas przetwarzania modułu %sq1", - "Znaleziono ostrzeżenia pominięte przez %d1 podczas przetwarzania modułu %sq1", - "Znaleziono pominięty błąd %d1 podczas przetwarzania modułu %sq1", - "Znaleziono %d1 pominiętych błędów podczas przetwarzania modułu %sq1", + "%u suppressed warning was encountered while processing %m", + "%u suppressed warnings were encountered while processing %m", + "%u suppressed error was encountered while processing %m", + "%u suppressed errors were encountered while processing %m", "uwzględniając", "Pominięte", "wirtualna funkcja składowa nie może mieć jawnego parametru „this”", "pobieranie adresu jawnej funkcji „this” wymaga kwalifikowanej nazwy", "utworzenie adresu jawnej funkcji „this” wymaga operatora \"&\"", "literału ciągu nie można użyć do zainicjowania elastycznej składowej tablicy", - "Reprezentacja IFC definicji funkcji %sq jest nieprawidłowa", + "the IFC representation of the definition of function %sq is invalid", null, "wykres IFC UniLevel nie został użyty do określenia parametrów", "Parametry (%u1) zostały określone przez wykres definicji parametru IFC, podczas gdy parametry (%u2) zostały określone przez deklarację IFC", "Parametry (%u1) zostały określone przez wykres definicji parametru IFC, podczas gdy parametry (%u2) zostały określone przez deklarację IFC", "Parametry (%u1) zostały określone przez wykres definicji parametru IFC, podczas gdy parametry (%u2) zostały określone przez deklarację IFC", - "Brak reprezentacji IFC definicji funkcji %sq", + "the IFC representation of the definition of function %sq is missing", "modyfikator funkcji nie ma zastosowania do deklaracji szablonu elementu członkowskiego", "wybór elementu członkowskiego obejmuje zbyt wiele zagnieżdżonych typów anonimowych", "nie ma wspólnego typu między argumentami operacji", @@ -3467,7 +3467,7 @@ "pole bitowe z niekompletnym typem wyliczeniowym lub nieprzezroczyste wyliczenie z nieprawidłowym typem podstawowym", "próbowano skonstruować element z partycji IFC %sq przy użyciu indeksu do partycji IFC %sq", "partycja %sq określiła swój rozmiar wpisu jako %u1, gdy oczekiwano wartości %u2", - "napotkano nieoczekiwane wymaganie IFC podczas przetwarzania modułu %sq1", + "an unexpected IFC requirement was encountered while processing %m", "warunek nie powiódł się w wierszu %d w %s1: %sq2", "niepodzielne ograniczenie zależy od samego siebie", "Funkcja \"noreturn\" ma zwracany typ inny niż void", @@ -3475,9 +3475,9 @@ "nie można określić domyślnego argumentu szablonu w deklaracji szablonu składowej klasy poza jej klasą", "napotkano nieprawidłową nazwę identyfikatora IFC %sq podczas odbudowy jednostki", null, - "nieprawidłowa wartość sortowania modułu %sq", + "%m invalid sort value", "szablon funkcji załadowany z modułu IFC został niepoprawnie przeanalizowany jako %nd", - "nie można załadować odwołania do jednostki IFC w module %sq", + "failed to load an IFC entity reference in %m", "z partycji %sq elementu %u1 (pozycja pliku %u2, względna pozycja %u3)", "desygnator łańcuchowy nie jest dozwolony dla typu klasy z destruktorem nietrywialnym", "jawna deklaracja specjalizacji nie może być deklaracją zaprzyjaźnioną", @@ -3506,9 +3506,9 @@ null, "nie może ocenić inicjatora dla elastycznego elementu członkowskiego tablicy", "domyślny inicjator pola bitowego jest funkcją C++20", - "zbyt wiele argumentów na liście argumentów szablonu w module %sq", + "too many arguments in template argument list in %m", "wykryto dla argumentu szablonu reprezentowanego przez %sq element %u1 (pozycja pliku %u2, pozycja względna %u3)", - "zbyt mało argumentów na liście argumentów szablonu w module %sq", + "too few arguments in template argument list in %m", "wykryty podczas przetwarzania listy argumentów szablonu reprezentowanej przez %sq elementu %u1 (pozycja pliku %u2, pozycja względna %u3)", "konwersja z typu wyliczenia z zakresem %t jest niestandardowa", "cofnięcie alokacji nie pasuje do rodzaju alokacji (jedna dotyczy tablicy, a druga nie)", @@ -3517,8 +3517,8 @@ "__make_unsigned jest zgodna tylko z nieliczbową liczbą całkowitą i typami wyliczenia", "nazwa wewnętrzna %sq będzie traktowana jako zwykły identyfikator z tego miejsca", "dostęp do odinicjowanego podobiektu w indeksie %d", - "Numer wiersza IFC (%u1) przepełnia maksymalną dozwoloną wartość (%u2) modułu %sq", - "moduł %sq1 zażądał elementu %u partycji %sq2. Ta pozycja pliku przekracza maksymalną wartość możliwą do reprezentowania", + "IFC line number (%u1) overflows maximum allowed value (%u2) %m", + "%m requested element %u of partition %sq, this file position exceeds the maximum representable value", "nieprawidłowa liczba argumentów", "ograniczenie dotyczące kandydata %n nie jest spełnione", "liczba parametrów elementu %n jest niezgodna z wywołaniem", @@ -3551,7 +3551,7 @@ "Nie można przetworzyć pliku IFC %sq", "Wersja IFC %u1.%u2 nie jest obsługiwana", "Architektura IFC %sq jest niezgodna z bieżącą architekturą docelową", - "moduł %sq1 żąda indeksu %u nieobsługiwanych partycji odpowiadającej %sq2", + "%m requests index %u of an unsupported partition corresponding to %sq", "numer parametru %d z %n ma typ %t, którego nie można ukończyć", "numer parametru %d z %n ma niekompletny typ %t", "numer parametru %d z %n ma typ abstrakcyjny %t", @@ -3570,7 +3570,7 @@ "złe odbicie (%r) dla splice wyrażenia", "Element %n został już zdefiniowany (poprzednia definicja :%p)", "obiekt infovec nie został zainicjowany", - "value_of typ %t1 jest niezgodny z danym odbiciem (jednostka o typie %t2)", + "extract of type %t1 is not compatible with the given reflection (entity with type %t2)", "odzwierciedlanie zestawu przeciążeń jest obecnie niedozwolone", "ta wewnętrzna funkcja wymaga odbicia dla wystąpienia szablonu", "niezgodne typy %t1 i %t2 dla operatora", @@ -3601,6 +3601,21 @@ "nie można utworzyć jednostki nagłówka dla bieżącej jednostki translacji", "bieżąca jednostka translacji używa co najmniej jednej funkcji, których obecnie nie można zapisać w jednostce nagłówka", "„explicit(bool)” jest funkcją języka C++20", + "first argument must be a pointer to integer, enum, or supported floating-point type", + "C++ modules cannot be used when compiling multiple translation units", + "C++ modules cannot be used with the pre-C++11 \"export\" feature", + "the IFC token %sq is not supported", + "the \"pass_object_size\" attribute is only valid on parameters of function declarations", + "the argument of the %sq attribute %d1 must be a value between 0 and %d2", + "a ref-qualifier here is ignored", + "invalid NEON vector element type %t", + "invalid NEON polyvector element type %t", + "invalid scalable vector element type %t", + "invalid number of tuple elements for scalable vector type", + "a NEON vector or polyvector must be either 64 or 128 bits wide", + "sizeless type %t is not allowed", + "an object of the sizeless type %t cannot be value-initialized", + "unexpected null declaration index found as part of scope %u", "nazwa modułu musi być określona dla mapy pliku modułu odwołującej się do pliku %sq", "odebrano wartość indeksu o wartości null, w której oczekiwano węzła w partycji IFC %sq", "%nd nie może mieć typu %t", @@ -3629,5 +3644,17 @@ "atrybut „ext_vector_type” ma zastosowanie tylko do typów będących wartością logiczną, liczbą całkowitą lub liczbą zmiennoprzecinkową", "wielokrotne desygnatory znajdujące się w tej samej unii są niedozwolone", "wiadomość testowa", - "emulowaną wersją Microsoft musi być co najmniej 1943, aby użyć polecenia „--ms_c++23”" -] + "emulowaną wersją Microsoft musi być co najmniej 1943, aby użyć polecenia „--ms_c++23”", + "invalid current working directory: %s", + "\"cleanup\" attribute within a constexpr function is not currently supported", + "the \"assume\" attribute can only apply to a null statement", + "assumption failed", + "variable templates are a C++14 feature", + "cannot take the address of a function with a parameter declared with the \"pass_object_size\" attribute", + "all arguments must have the same type", + "the final comparison was %s1 %s2 %s3", + "too many arguments for attribute %sq", + "mantissa string does not contain a valid number", + "floating-point error during constant evaluation", + "inheriting constructor %n ignored for copy/move-like operation" +] \ No newline at end of file diff --git a/Extension/bin/messages/pt-br/messages.json b/Extension/bin/messages/pt-br/messages.json index bfc788f38..15bf5185d 100644 --- a/Extension/bin/messages/pt-br/messages.json +++ b/Extension/bin/messages/pt-br/messages.json @@ -163,7 +163,7 @@ "#pragma não reconhecido", null, "não pôde abrir arquivo temporário %sq: %s2", - "nome de diretório para arquivos temporários é muito longo (%sq)", + null, "muito poucos argumentos na chamada da função", "constante flutuante inválida", "argumento do tipo %t1 é incompatível com parâmetro do tipo %t2", @@ -1828,7 +1828,7 @@ "função 'auto' requer um tipo de retorno à frente", "um modelo de membros não pode ter um especificador puro", "string literal muito longa - caracteres excedentes ignorados", - "a opção para controle a palavra-chave nullptr pode ser utilizada somente quando se estiver compilando C++", + null, "std::nullptr_t convertido para bool", null, null, @@ -3230,8 +3230,8 @@ "a outra correspondência é %t", "o atributo 'availability' usado aqui é ignorado", "A instrução inicializadora no estilo C++20 em uma instrução 'for' com base em intervalos não é padrão neste modo", - "co_await pode ser aplicado somente a uma instrução 'for' baseada em intervalos", - "não é possível deduzir o tipo de intervalo no loop 'for' com base em intervalos", + "co_await can only apply to a range-based \"for\" statement", + "cannot deduce type of range in range-based \"for\" statement", "as variáveis embutidas são um recurso do C++17", "a destruição do operador de exclusão exige %t como primeiro parâmetro", "a destruição de um operador de exclusão não pode ter parâmetros diferentes de std::size_t e std::align_val_t", @@ -3272,17 +3272,17 @@ "%sq não é um cabeçalho importável", "não é possível importar um módulo sem nome", "um módulo não pode ter uma dependência de interface em si mesmo", - "o módulo %sq já foi importado", + "%m has already been imported", "arquivo de módulo", "não foi possível localizar o arquivo de módulo para o módulo %sq", "não foi possível importar o arquivo de módulo %sq", - "era esperado %s1, foi encontrado %s2", + null, "ao abrir o arquivo de módulo %sq", "nome de partição desconhecido %sq", - "um arquivo de módulo desconhecido", - "um arquivo de módulo de cabeçalho importável", - "um arquivo de módulo EDG", - "um arquivo de módulo IFC", + null, + null, + null, + null, "um arquivo de módulo inesperado", "o tipo do segundo operando %t2 precisa ter o mesmo tamanho que %t1", "o tipo precisa ser fácil de ser copiado", @@ -3347,7 +3347,7 @@ "não é possível localizar o cabeçalho '%s' a ser importado", "mais de um arquivo na lista de arquivos de módulo corresponde a '%s'", "o arquivo de módulo encontrado para '%s' é de um módulo diferente", - "qualquer tipo de arquivo de módulo", + null, "não é possível ler o arquivo de módulo", "a função interna não está disponível porque não há suporte para o tipo char8_t com as opções atuais", null, @@ -3368,7 +3368,7 @@ "não é possível interpretar o layout de bit para este destino de compilação", "nenhum operador correspondente para o operador IFC %sq", "não há convenção de chamada correspondente para a convenção de chamada IFC %sq", - "o módulo %sq contém constructos sem suporte", + "%m contains unsupported constructs", "constructo IFC sem suporte: %sq", "__is_signed não é mais uma palavra-chave deste ponto", "uma dimensão de matriz precisa ter um valor inteiro sem sinal constante", @@ -3417,35 +3417,35 @@ "'if consteval' e 'if not consteval' não são padrão neste modo", "omitir '()' em um declarador lambda não é padrão neste modo", "uma cláusula-requer à direita não é permitida quando a lista de parâmetros lambda é omitida", - "módulo %sq partição inválida solicitada", - "módulo %sq1 partição indefinida (acredita-se que seja %sq2) solicitada", + "%m invalid partition requested", + "%m undefined partition (believed to be %sq) requested", null, null, - "módulo %sq1, posição do arquivo %u1 (posição relativa %u2) solicitado para a partição %sq2 — que transborda o final de sua partição", - "módulo %sq1, posição do arquivo %u1 (posição relativa %u2) solicitado para a partição %sq2 — que está desalinhada com seus elementos de partições", + "%m file position %u1 (relative position %u2) requested for partition %sq - which overflows the end of its partition", + "%m file position %u1 (relative position %u2) requested for partition %sq - which is misaligned with its partitions elements", "do subcampo %sq (posição relativa ao nó %u)", "da partição %sq, elemento %u1 (posição do arquivo %u2, posição relativa %u3)", "atributos em lambdas são um recurso do C++23", "O identificador %sq pode ser confundido com um visualmente semelhante ao que aparece %p", "este comentário contém caracteres de controle de formatação Unicode suspeitos", "essa cadeia de caracteres contém caracteres de controle de formatação Unicode que podem resultar em comportamento de runtime inesperado", - "%d1 aviso suprimido encontrado durante o processamento do módulo %sq1", - "%d1 avisos suprimidos foram encontrados durante o processamento do módulo %sq1", - "%d1 erro suprimido encontrado ao processar o módulo %sq1", - "%d1 erros suprimidos foram encontrados durante o processamento do módulo %sq1", + "%u suppressed warning was encountered while processing %m", + "%u suppressed warnings were encountered while processing %m", + "%u suppressed error was encountered while processing %m", + "%u suppressed errors were encountered while processing %m", "incluindo", "suprimida", "uma função membro virtual não pode ter um parâmetro 'this' explícito", "usar o endereço de uma função explícita 'this' requer um nome qualificado", "formar o endereço de uma função 'this' explícita requer o operador '&'", "um literal de cadeia de caracteres não pode ser usado para inicializar um membro de matriz flexível", - "A representação IFC da definição da função %sq é inválida", + "the IFC representation of the definition of function %sq is invalid", null, "um gráfico UNILevel IFC não foi usado para especificar parâmetros", "%u1 parâmetros foram especificados pelo gráfico de definição de parâmetro IFC, enquanto %u2 parâmetros foram especificados pela declaração IFC", "O parâmetro %u1 foi especificado pelo gráfico de definição de parâmetro IFC, enquanto os parâmetros %u2 foram especificados pela declaração IFC", "O parâmetro %u1 foi especificado pelo gráfico de definição de parâmetro IFC, enquanto parâmetros %u2 foram especificados pela declaração IFC", - "A representação IFC da definição da função %sq está ausente", + "the IFC representation of the definition of function %sq is missing", "o modificador de função não se aplica à declaração de modelo do membro", "a seleção de membro envolve muitos tipos anônimos aninhados", "não há nenhum tipo comum entre os operandos", @@ -3467,7 +3467,7 @@ "um campo de bits com um tipo de enumeração incompleto ou uma enumeração opaca com um tipo base inválido", "tentou construir um elemento da partição IFC %sq usando um índice na partição IFC %sq2", "a partição %sq especificou seu tamanho de entrada como %u1 quando %u2 era esperado", - "um requisito IFC inesperado foi encontrado durante o processamento do módulo %sq1", + "an unexpected IFC requirement was encountered while processing %m", "condição falhou na linha %d em %s1: %sq2", "restrição atômica depende de si mesma", "A função 'noreturn' tem um tipo de retorno não nulo", @@ -3475,9 +3475,9 @@ "não é possível especificar um argumento de modelo padrão na definição do modelo de um membro fora de sua classe", "nome de identificador IFC inválido %sq encontrado durante a reconstrução da entidade", null, - "valor de classificação inválido do módulo %sq", + "%m invalid sort value", "um modelo de função carregado de um módulo IFC foi analisado incorretamente como %nd", - "falha ao carregar uma referência de entidade IFC no módulo %sq", + "failed to load an IFC entity reference in %m", "da partição %sq, elemento %u1 (posição do arquivo %u2, posição relativa %u3)", "designadores encadeados não são permitidos para um tipo de classe com um destruidor não trivial", "uma declaração de especialização explícita não pode ser uma declaração de friend", @@ -3506,9 +3506,9 @@ null, "não é possível avaliar um inicializador para um membro de matriz flexível", "um inicializador de campo de bit padrão é um recurso C++20", - "muitos argumentos na lista de argumentos do modelo no módulo %sq", + "too many arguments in template argument list in %m", "detectado para o argumento de modelo representado pelo elemento %sq %u1 (posição do arquivo %u2, posição relativa %u3)", - "poucos argumentos na lista de argumentos do modelo no módulo %sq", + "too few arguments in template argument list in %m", "detectado durante o processamento da lista de argumentos do modelo representada pelo elemento %sq %u1 (posição do arquivo %u2, posição relativa %u3)", "a conversão do tipo de enumeração com escopo %t não é padrão", "a desalocação não corresponde ao tipo de alocação (uma é para uma matriz e a outra não)", @@ -3517,8 +3517,8 @@ "__make_unsigned só é compatível com inteiros não bool e tipos enum", "o nome intrínseco %sq será tratado como um identificador comum a partir daqui", "acesso ao subobjeto não inicializado no índice %d", - "o número de linha IFC (%u1) estoura o valor máximo permitido (%u2), módulo %sq", - "o módulo %sq1 solicitou o elemento %u da partição %sq2, essa posição do arquivo excede o valor máximo representável", + "IFC line number (%u1) overflows maximum allowed value (%u2) %m", + "%m requested element %u of partition %sq, this file position exceeds the maximum representable value", "número de argumentos errado", "restrição sobre o candidato %n não satisfeita", "o número de parâmetros de %n não corresponde à chamada", @@ -3551,7 +3551,7 @@ "O arquivo IFC %sq não pode ser processado", "A versão IFC %u1.%u2 não tem suporte", "A arquitetura IFC %sq é incompatível com a arquitetura de destino atual", - "o módulo %sq1 índice de solicitações %u de uma partição sem suporte correspondente %sq2", + "%m requests index %u of an unsupported partition corresponding to %sq", "o número de parâmetro %d de %n tem tipo %t que não pode ser concluído", "o número de parâmetro %d de %n tem o tipo incompleto %t", "o número de parâmetro %d de %n tem tipo o abstrato %t", @@ -3570,7 +3570,7 @@ "reflexão incorreta (%r) para a expressão splice", "%n já foi definido (definição anterior %p)", "objeto infovec não inicializado", - "o value_of tipo %t1 não é compatível com a reflexão fornecida (entidade com o tipo %t2)", + "extract of type %t1 is not compatible with the given reflection (entity with type %t2)", "refletir um conjunto de sobrecargas não é permitido no momento", "este elemento intrínseco requer uma reflexão para uma instância de modelo", "tipos incompatíveis %t1 e %t2 para o operador", @@ -3601,6 +3601,21 @@ "não foi possível criar uma unidade de cabeçalho para a unidade de tradução atual", "a unidade de tradução atual usa um ou mais recursos que não podem ser gravados atualmente em uma unidade de cabeçalho", "'explicit(bool)' é um recurso do C++20", + "first argument must be a pointer to integer, enum, or supported floating-point type", + "C++ modules cannot be used when compiling multiple translation units", + "C++ modules cannot be used with the pre-C++11 \"export\" feature", + "the IFC token %sq is not supported", + "the \"pass_object_size\" attribute is only valid on parameters of function declarations", + "the argument of the %sq attribute %d1 must be a value between 0 and %d2", + "a ref-qualifier here is ignored", + "invalid NEON vector element type %t", + "invalid NEON polyvector element type %t", + "invalid scalable vector element type %t", + "invalid number of tuple elements for scalable vector type", + "a NEON vector or polyvector must be either 64 or 128 bits wide", + "sizeless type %t is not allowed", + "an object of the sizeless type %t cannot be value-initialized", + "unexpected null declaration index found as part of scope %u", "um nome de módulo deve ser especificado para o mapa do arquivo de módulo que faz referência ao arquivo %sq", "um valor de índice nulo foi recebido onde um nó na partição IFC %sq esperado", "%nd não pode ter o tipo %t", @@ -3629,5 +3644,17 @@ "o atributo 'ext_vector_type' se aplica somente a booleano, inteiro ou ponto flutuante", "vários designadores na mesma união não são permitidos", "mensagem de teste", - "a versão da Microsoft que está sendo emulada deve ser pelo menos 1943 para usar '--ms_c++23'" -] + "a versão da Microsoft que está sendo emulada deve ser pelo menos 1943 para usar '--ms_c++23'", + "invalid current working directory: %s", + "\"cleanup\" attribute within a constexpr function is not currently supported", + "the \"assume\" attribute can only apply to a null statement", + "assumption failed", + "variable templates are a C++14 feature", + "cannot take the address of a function with a parameter declared with the \"pass_object_size\" attribute", + "all arguments must have the same type", + "the final comparison was %s1 %s2 %s3", + "too many arguments for attribute %sq", + "mantissa string does not contain a valid number", + "floating-point error during constant evaluation", + "inheriting constructor %n ignored for copy/move-like operation" +] \ No newline at end of file diff --git a/Extension/bin/messages/ru/messages.json b/Extension/bin/messages/ru/messages.json index d6ad8182f..b4ffc3669 100644 --- a/Extension/bin/messages/ru/messages.json +++ b/Extension/bin/messages/ru/messages.json @@ -163,7 +163,7 @@ "нераспознанная директива #pragma", null, "не удалось открыть временный файл %sq: %s2", - "слишком длинное имя каталога временных файлов (%sq)", + null, "слишком мало аргументов в вызове функции", "недопустимая константа с плавающей запятой", "аргумент типа %t1 несовместим с параметром типа %t2", @@ -1828,7 +1828,7 @@ "функция \"auto\" требует наличия завершающего возвращаемого типа", "у шаблона члена не может быть чистого спецификатора", "слишком длинный строковый литерал - лишние знаки игнорируются", - "параметр для управления ключевым словом nullptr может использоваться только при компиляции C++", + null, "std::nullptr_t, преобразованный в логический тип", null, null, @@ -3230,8 +3230,8 @@ "другое совпадение — %t", "Использованный здесь атрибут \"Availability\" игнорируется.", "Оператор инициализатора в стиле C++20 в операторе for на основе диапазонов является нестандартным в этом режиме.", - "co_await можно применить только к оператору for на основе диапазонов.", - "Невозможно вывести тип диапазона в цикле for на основе диапазона.", + "co_await can only apply to a range-based \"for\" statement", + "cannot deduce type of range in range-based \"for\" statement", "встроенные переменные — это функция C++17", "для оператора удаления delete необходимо указать %t в качестве первого параметра", "оператор удаления delete не может иметь параметров, типы которых отличаются от std::size_t и std::align_val_t", @@ -3272,17 +3272,17 @@ "%sq не является пригодным для импорта заголовком", "Невозможно импортировать модуль без имени", "Модуль не может иметь зависимость интерфейса от самого себя", - "Модуль %sq уже импортирован", + "%m has already been imported", "файл модуля", "не удалось найти файл модуля для модуля %sq", "не удалось импортировать файл модуля %sq", - "ожидалось %s1, но было найдено %s2", + null, "При открытии файла модуля %sq", "Неизвестное имя раздела %sq", - "неизвестный файл модуля", - "импортируемый файл модуля заголовка", - "файл модуля EDG", - "файл модуля IFC", + null, + null, + null, + null, "непредвиденный файл модуля", "тип второго операнда %t2 должен иметь тот же размер, что и %t1.", "тип должен поддерживать элементарное копирование.", @@ -3347,7 +3347,7 @@ "не удается найти заголовок \"%s\" для импорта", "несколько файлов в списке файлов модулей соответствуют \"%s\"", "файл модуля, обнаруженный для \"%s\", относится к другому модулю", - "любой тип файла модуля", + null, "не удалось прочитать файл модуля", "встроенная функция недоступна, так как тип char8_t не поддерживается с текущими параметрами.", null, @@ -3368,7 +3368,7 @@ "не удается интерпретировать битовый макет для этого целевого объекта компиляции", "отсутствует соответствующий оператор для оператора IFC %sq", "отсутствует соответствующее соглашение о вызовах для соглашения о вызовах IFC %sq", - "модуль %sq содержит неподдерживаемые конструкции", + "%m contains unsupported constructs", "неподдерживаемая конструкция IFC: %sq", "__is_signed больше не является ключевым словом из этой точки", "измерение массива должно иметь постоянное целочисленное значение без знака", @@ -3417,35 +3417,35 @@ "\"if consteval\" и \"if not consteval\" не являются стандартными в этом режиме", "опущение \"()\" в лямбда-операторе объявления является нестандартным в этом режиме", "конечное предложение requires не допускается, если список лямбда-параметров опущен", - "запрошен недопустимый раздел модуля %sq", - "запрошен неопределенный раздел модуля %sq1 (предполагается — %sq2)", + "%m invalid partition requested", + "%m undefined partition (believed to be %sq) requested", null, null, - "модуль %sq1, позиция файла %u1 (относительная позиция %u2) запрошена для раздела %sq2, который переполняет окончание этого раздела", - "модуль %sq1, позиция файла %u1 (относительная позиция %u2) запрошена для раздела %sq2, который не выровнен по элементам разделов", + "%m file position %u1 (relative position %u2) requested for partition %sq - which overflows the end of its partition", + "%m file position %u1 (relative position %u2) requested for partition %sq - which is misaligned with its partitions elements", "из подполя %sq (относительное положение к узлу %u)", "из раздела %sq, элемент %u1 (позиция файла %u2, относительная позиция %u3)", "атрибуты в лямбда-выражениях являются компонентом C++23", "идентификатор %sq можно перепутать с визуально похожим %p", "этот комментарий содержит подозрительные управляющие символы форматирования Юникода", "эта строка содержит управляющие символы форматирования Юникода, которые могут привести к непредвиденной работе среды выполнения", - "обнаружено %d1 подавленное предупреждение при обработке модуля %sq1", - "обнаружено несколько (%d1) подавленных предупреждений при обработке модуля %sq1", - "Обнаружена %d1 подавленная ошибка при обработке модуля %sq1", - "Обнаружено несколько (%d1) подавленных ошибок при обработке модуля %sq1", + "%u suppressed warning was encountered while processing %m", + "%u suppressed warnings were encountered while processing %m", + "%u suppressed error was encountered while processing %m", + "%u suppressed errors were encountered while processing %m", "включая", "подавлено", "виртуальная функция-член не может иметь явный параметр \"this\"", "для получения адреса явной функции \"this\" требуется полное имя", "для формирования адреса явной функции \"this\" требуется оператор \"&\"", "строковый литерал нельзя использовать для инициализации элемента гибкого массива", - "Представление IFC определения функции %sq недопустимо", + "the IFC representation of the definition of function %sq is invalid", null, "диаграмма IFC UniLevel не использовалось для указания параметров", "несколько (%u1) параметров указаны в диаграмме определения параметров IFC, в то время как несколько (%u2) параметров указаны в объявлении IFC", "%u1 параметр указан в диаграмме определения параметров IFC, в то время как несколько (%u2) параметров указаны в объявлении IFC", "несколько (%u1) параметров указаны в диаграмме определения параметров IFC, в то время как %u2 параметр указан в объявлении IFC", - "Представление IFC определения функции %sq отсутствует", + "the IFC representation of the definition of function %sq is missing", "модификатор функции не применяется к объявлению шаблона элемента", "выбор элемента включает слишком много вложенных анонимных типов", "между операндами нет общего типа", @@ -3467,7 +3467,7 @@ "битовые поля с неполным типом или непрозрачное перечисление с недопустимым базовым типом", "попытка создать элемент из раздела IFC %sq с использованием индекса в разделе IFC %sq2", "размер записи в разделе %sq указан как %u1, в то время как ожидалось %u2", - "При обработке модуля %sq1 было обнаружено неожиданное требование IFC", + "an unexpected IFC requirement was encountered while processing %m", "сбой условия в строке %d в %s1: %sq2", "атомарное ограничение зависит от самого себя", "Функция \"noreturn\" имеет не недействительный тип возврата", @@ -3475,9 +3475,9 @@ "аргумент шаблона по умолчанию не может быть указан в определении шаблона элемента вне его класса", "обнаружено недопустимое имя идентификатора IFC %sq во время реконструкции сущности", null, - "недопустимое значение сортировки модуля %sq", + "%m invalid sort value", "шаблон функции, загруженный из модуля IFC, был неправильно проанализирован как %nd", - "не удалось загрузить ссылку на объект IFC в модуль %sq", + "failed to load an IFC entity reference in %m", "из раздела %sq, элемент %u1 (позиция файла %u2, относительная позиция %u3)", "цепные обозначения не разрешены для типа класса с нетривиальным деструктором", "явное объявление специализации не может быть объявлением дружественной функции", @@ -3506,9 +3506,9 @@ null, "не удается оценить инициализатор для элемента гибкого массива", "стандартный инициализатор битового поля является функцией C++20", - "слишком много аргументов в списке аргументов шаблона в модуле %sq", + "too many arguments in template argument list in %m", "обнаружено для аргумента шаблона, представленного элементом %sq %u1 (позиция файла %u2, относительная позиция %u3)", - "слишком мало аргументов в списке аргументов шаблона в модуле %sq", + "too few arguments in template argument list in %m", "обнаружено при обработке для списка аргументов шаблона, представленного элементом %sq %u1 (позиция файла %u2, относительная позиция %u3)", "преобразование из типа ограниченного перечисления %t является нестандартным", "освобождение не соответствует типу выделения (одно из них для массива, а другое нет)", @@ -3517,8 +3517,8 @@ "__make_unsigned совместимо только с нелогическими целыми числами и типами перечислений", "внутреннее имя %sq будет рассматриваться с этого момента как обычный идентификатор", "доступ к неинициализированному подобъекту в индексе %d", - "Номер строки IFC (%u1) переполняет максимально допустимое значение (%u2) модуля %sq", - "модуль %sq1 запросил элемент %u раздела %sq2, эта позиция файла превышает максимальное отображаемое значение", + "IFC line number (%u1) overflows maximum allowed value (%u2) %m", + "%m requested element %u of partition %sq, this file position exceeds the maximum representable value", "неправильное количество аргументов", "ограничение по соискателю %n не выполнено", "количество параметров %n не соответствует вызову", @@ -3551,7 +3551,7 @@ "Не удается обработать файл IFC %sq", "Версия IFC %u1.%u2 не поддерживается", "Архитектура IFC %sq несовместима с текущей целевой архитектурой", - "модуль %sq1 запрашивает индекс %u неподдерживаемой секции, соответствующей %sq2", + "%m requests index %u of an unsupported partition corresponding to %sq", "номер параметра %d из %n имеет тип %t, который не может быть завершен", "номер параметра %d из %n имеет неполный тип %t", "номер параметра %d из %n имеет абстрактный тип %t", @@ -3570,7 +3570,7 @@ "плохое отражение (%r) для выражения splice", "%n уже определено (предыдущее определение %p)", "объект infovec не инициализирован", - "value_of type %t1 несовместимо с данным отражением (сущность с типом %t2)", + "extract of type %t1 is not compatible with the given reflection (entity with type %t2)", "отражение набора перегрузки сейчас не разрешено", "эта внутренняя функция требует отражения для экземпляра шаблона", "несовместимые типы %t1 и %t2 для оператора", @@ -3601,6 +3601,21 @@ "не удалось создать единицу заголовка для текущей единицы трансляции", "текущая единица трансляции использует одну или несколько функций, которые в данный момент невозможно записать в единицу заголовка", "\"explicit(bool)\" — это функция C++20", + "first argument must be a pointer to integer, enum, or supported floating-point type", + "C++ modules cannot be used when compiling multiple translation units", + "C++ modules cannot be used with the pre-C++11 \"export\" feature", + "the IFC token %sq is not supported", + "the \"pass_object_size\" attribute is only valid on parameters of function declarations", + "the argument of the %sq attribute %d1 must be a value between 0 and %d2", + "a ref-qualifier here is ignored", + "invalid NEON vector element type %t", + "invalid NEON polyvector element type %t", + "invalid scalable vector element type %t", + "invalid number of tuple elements for scalable vector type", + "a NEON vector or polyvector must be either 64 or 128 bits wide", + "sizeless type %t is not allowed", + "an object of the sizeless type %t cannot be value-initialized", + "unexpected null declaration index found as part of scope %u", "необходимо указать имя модуля для сопоставления файла модуля, ссылающегося на файл %sq", "было получено значение NULL индекса, в котором ожидался узел в секции IFC%sq", "%nd не может иметь тип %t", @@ -3629,5 +3644,17 @@ "атрибут ext_vector_type применяется только к типам bool, integer или float point", "использование нескольких указателей в одном объединении не допускается", "тестовое сообщение", - "для использования \"--ms_c++23\" эмулируемая версия Майкрософт должна быть не ниже 1943" -] + "для использования \"--ms_c++23\" эмулируемая версия Майкрософт должна быть не ниже 1943", + "invalid current working directory: %s", + "\"cleanup\" attribute within a constexpr function is not currently supported", + "the \"assume\" attribute can only apply to a null statement", + "assumption failed", + "variable templates are a C++14 feature", + "cannot take the address of a function with a parameter declared with the \"pass_object_size\" attribute", + "all arguments must have the same type", + "the final comparison was %s1 %s2 %s3", + "too many arguments for attribute %sq", + "mantissa string does not contain a valid number", + "floating-point error during constant evaluation", + "inheriting constructor %n ignored for copy/move-like operation" +] \ No newline at end of file diff --git a/Extension/bin/messages/tr/messages.json b/Extension/bin/messages/tr/messages.json index b82139ea9..cd2e98505 100644 --- a/Extension/bin/messages/tr/messages.json +++ b/Extension/bin/messages/tr/messages.json @@ -163,7 +163,7 @@ "tanınmayan #pragma", null, "geçici dosya %sq açılamıyor: %s2", - "geçici dosya dizininin adı çok uzun (%sq)", + null, "işlev çağrısı içinde çok az sayıda bağımsız değişken var", "geçersiz kayan sabit", "%t1 türündeki bağımsız değişken %t2 türü parametre ile uyumsuz", @@ -1828,7 +1828,7 @@ "'auto' işlevi, bitiş dönüş türü gerektiriyor", "bir üye şablonu, saf bir belirticiye sahip olamaz", "dize sabit değeri çok uzun; fazla karakterler yoksayılıyor", - "nullptr anahtar sözcüğünü denetleme seçeneği yalnızca C++ derlerken kullanılabilir", + null, "std::nullptr_t, bool'a dönüştürüldü", null, null, @@ -3230,8 +3230,8 @@ "diğer eşleşme %t", "burada kullanılan 'availability' özniteliği yoksayıldı", "Bu modda, aralık tabanlı 'for' deyimindeki C++20 stili başlatıcı deyimi standart dışıdır", - "co_await yalnızca aralık tabanlı for deyimine uygulanabilir", - "aralık tabanlı 'for' döngüsündeki aralık türü çıkarsanamıyor", + "co_await can only apply to a range-based \"for\" statement", + "cannot deduce type of range in range-based \"for\" statement", "satır içi değişkenler bir C++17 özelliğidir", "yok etme işleci silme işlemi birinci parametre olarak %t gerektirir", "yok etme işleci silme, std::size_t ve std::align_val_t dışında parametrelere sahip olamaz", @@ -3272,17 +3272,17 @@ "%sq, içeri aktarılabilen bir üst bilgi değil", "adı olmayan bir modül içeri aktarılamaz", "modülün kendisine yönelik arabirim bağımlılığı olamaz", - "%sq modülü zaten içeri aktarılmış", + "%m has already been imported", "modül dosyası", "%sq modülü için modül dosyası bulunamadı", "%sq modül dosyası içeri aktarılamadı", - "%s1 bekleniyordu ancak bunun yerine %s2 bulundu", + null, "%sq modül dosyası açılırken", "%sq bölüm adı bilinmiyor", - "bilinmeyen bir modül dosyası", - "içeri aktarılabilir üst bilgi modülü dosyası", - "EDG modülü dosyası", - "IFC modülü dosyası", + null, + null, + null, + null, "beklenmeyen bir modül dosyası", "%t2 ikinci işlenenin türü, %t1 ile aynı boyutta olmalıdır", "tür, üç yana kopyalanabilir olmalıdır", @@ -3347,7 +3347,7 @@ "içeri aktarılacak '%s' üst bilgisi bulunamıyor", "modül dosyası listesinde birden fazla dosya '%s' ile eşleşiyor", "'%s' için bulunan modül dosyası farklı bir modüle yönelik", - "herhangi bir türde modül dosyası", + null, "modül dosyası okunamıyor", "char8_t türü geçerli seçeneklerle desteklenmediği için yerleşik işlev kullanılamıyor", null, @@ -3368,7 +3368,7 @@ "bu derleme hedefi için bit düzeni yorumlanamıyor", "%sq IFC operatörüne karşılık gelen operatör yok", "%sq IFC çağırma kuralına karşılık gelen çağırma kuralı yok", - "%sq modülü desteklenmeyen yapılar içeriyor", + "%m contains unsupported constructs", "desteklenmeyen IFC yapısı: %sq", "__is_signed şu andan itibaren bir anahtar sözcük değil", "dizi boyutu sabit bir işaretsiz tamsayı değerine sahip olmalıdır", @@ -3417,35 +3417,35 @@ "'if consteval' ve 'if not consteval' bu modda standart değil", "lambda bildirimcisinde '()' atlanması bu modda standart değil", "lambda parametre listesi atlandığında trailing-requires-clause’a izin verilmez", - "%sq modülünün geçersiz bölümü istendi", - "%sq1 modülünün tanımsız bölümü (%sq2 olduğu düşünülüyor) istendi", + "%m invalid partition requested", + "%m undefined partition (believed to be %sq) requested", null, null, - "modül %sq1 dosya konumu %u1 (%u2 göreli konum) %sq2 bölümü için istendi - bu, bölümünün sonundan taşar", - "%sq1 modülünün %u1 dosya konumu (%u2 göreli konumu) bölüm öğeleriyle yanlış hizalanan %sq2 bölümü için istekte bulundu", + "%m file position %u1 (relative position %u2) requested for partition %sq - which overflows the end of its partition", + "%m file position %u1 (relative position %u2) requested for partition %sq - which is misaligned with its partitions elements", "%sq alt alanından (%u düğümüne göreli konum)", "%sq bölümündeki %u1 öğesinden (%u2 dosya konumu, %u3 göreli konumu)", "lambdalar üzerindeki öznitelikler bir C++23 özelliğidir", "%sq tanımlayıcısı görsel olarak %p gibi görünen tanımlayıcıyla karıştırılabilir", "bu açıklama, şüpheli Unicode biçimlendirme denetim karakterleri içeriyor", "bu dize beklenmeyen çalışma zamanı davranışına neden olabilecek Unicode biçimlendirme denetim karakterleri içeriyor", - "%d1 modülü işlenirken %sq1 gizlenen uyarıyla karşılaşıldı", - "%d1 modülü işlenirken %sq1 gizlenen uyarıyla karşılaşıldı", - "%d1 modülü işlenirken %sq1 gizlenen hatayla karşılaşıldı", - "%d1 modülü işlenirken %sq1 gizlenen hatayla karşılaşıldı", + "%u suppressed warning was encountered while processing %m", + "%u suppressed warnings were encountered while processing %m", + "%u suppressed error was encountered while processing %m", + "%u suppressed errors were encountered while processing %m", "dahil", "gizlendi", "sanal üye işlevi açık bir 'this' parametresine sahip olamaz", "açık 'this' işlevine ait adresin alınabilmesi için tam ad gerekir", "açık 'this' işlevine ait adresin oluşturulabilmesi için '&' operatörü gerekir", "sabit değerli dize, esnek bir dizi üyesini başlatmak için kullanılamaz", - "%sq işlevine ait tanımın IFC gösterimi geçersiz", + "the IFC representation of the definition of function %sq is invalid", null, "parametreleri belirtmek için UniLevel IFC grafiği kullanılmadı", "%u1 parametreleri, IFC parametre tanım grafiği tarafından, %u2 parametreleri ise IFC bildirimi tarafından belirtilir", "%u1 parametresi, IFC parametre tanım grafiği tarafından, %u2 parametreleri ise IFC bildirimi tarafından belirtilmiştir", "%u1 parametreleri, IFC parametre tanım grafiği tarafından, %u2 parametresi ise IFC bildirimi tarafından belirtilmiştir", - "%sq işlevine ait tanımın IFC gösterimi eksik", + "the IFC representation of the definition of function %sq is missing", "işlev değiştirici, üye şablonu bildirimi için geçerli değil", "üye seçimi çok fazla iç içe anonim tür içeriyor", "işlenenler arasında ortak tür yok", @@ -3467,7 +3467,7 @@ "tamamlanmamış sabit listesi türüne sahip bir bit alanı veya geçersiz temel türe sahip opak bir sabit listesi", "%sq2 IFC bölümü içinde bir dizin kullanılarak %sq IFC bölümündeki bir öğe oluşturulmaya çalışıldı", "%sq bölümü, %u2 beklendiğinde giriş boyutunu %u1 olarak belirtti", - "%sq1 modülü işlenirken beklenmeyen bir IFC gereksinimiyle karşılaşıldı", + "an unexpected IFC requirement was encountered while processing %m", "koşul, %d numaralı satırda (%s1 içinde) başarısız oldu: %sq2", "atomik kısıtlama kendisine bağımlı", "'noreturn' işlevi geçersiz olmayan bir dönüş türüne sahiptir", @@ -3475,9 +3475,9 @@ "varsayılan bir şablon bağımsız değişkeni, sınıfının dışındaki bir şablon üyesinin tanımında belirtilemez", "varlık yeniden oluşturma işlemi sırasında geçersiz %sq IFC tanımlayıcı adı ile karşılaşıldı", null, - "%sq modülü geçersiz sıralama değeri", + "%m invalid sort value", "bir IFC modülünden yüklenen bir fonksiyon şablonu hatalı bir şekilde %nd olarak ayrıştırıldı", - "%sq modülünde bir IFC varlık referansı yüklenemedi", + "failed to load an IFC entity reference in %m", "%sq bölümündeki %u1 öğesinden (%u2 dosya konumu, %u3 göreli konumu)", "zincirli belirleyicilere, önemsiz yıkıcıya sahip bir sınıf türü için izin verilmez", "açık bir özelleştirme bildirimi, arkadaş bildirimi olamaz", @@ -3506,9 +3506,9 @@ null, "esnek bir dizi üyesi için bir başlatıcıyı değerlendiremez", "varsayılan bir bit alanı başlatıcı, bir C++20 özelliğidir", - "%sq modülündeki şablon argüman listesinde çok fazla argüman var", + "too many arguments in template argument list in %m", "%sq öğesi %u1 tarafından temsil edilen şablon bağımsız değişkeni için algılandı (dosya konumu %u2, göreli konum %u3)", - "%sq modülündeki şablon argüman listesinde çok az argüman var", + "too few arguments in template argument list in %m", "%sq öğesi %u1 tarafından temsil edilen şablon bağımsız değişken listesi işlenirken algılandı (dosya konumu %u2, göreli konum %u3)", "%t kapsamlı sabit listesi türünden dönüştürme standart değil", "serbest bırakma, tahsis türüyle eşleşmiyor (biri bir dizi için, diğeri değil)", @@ -3517,8 +3517,8 @@ "__make_unsigned yalnızca bool olmayan tamsayı ve sabit listesi türleriyle uyumludur", "%sq gerçek adı buradan sıradan bir tanımlayıcı olarak ele alınacaktır.", "%d dizinindeki başlatılmamış alt nesneye erişim", - "IFC satır numarası (%u1), izin verilen maksimum değeri (%u2) modül %sq'den taşar", - "modül %sq1 istenen %u bölüm %sq2 ise, bu dosya konumu temsil edilebilir en büyük değeri aşıyor", + "IFC line number (%u1) overflows maximum allowed value (%u2) %m", + "%m requested element %u of partition %sq, this file position exceeds the maximum representable value", "yanlış bağımsız değişken sayısı", "%n adayı üzerindeki kısıtlama karşılanamadı", "%n parametresinin sayısı çağrıyla eşleşmiyor", @@ -3551,7 +3551,7 @@ "%sq IFC dosyası işlenemiyor", "%u1.%u2 IFC sürümü desteklenmiyor", "%sq IFC mimarisi geçerli hedef mimariyle uyumsuz", - "%sq1 modülü, desteklenmeyen bir bölümün %u dizinini istiyor (%sq2 modülüne karşılık gelir)", + "%m requests index %u of an unsupported partition corresponding to %sq", "%n üzerindeki %d numaralı parametre %t türünde ve tamamlanamıyor", "%n üzerindeki %d numaralı parametre %t türünde ve tür tamamlanmamış", "%n üzerindeki %d numaralı parametre %t türünde ve bu bir soyut tür", @@ -3570,7 +3570,7 @@ "ifade eşleme için hatalı yansıma (%r)", "%n zaten tanımlandı (önceki tanım %p)", "infovec nesnesi başlatılamadı", - "value_of %t1 türü verilen yansımayla (%t2 türüne sahip varlık) uyumlu değil", + "extract of type %t1 is not compatible with the given reflection (entity with type %t2)", "aşırı yükleme kümesini yansıtmaya şu anda izin verilmiyor", "bu iç öğe, bir şablon örneği için yansıma gerektiriyor", "işleç için %t1 ve %t2 türleri uyumsuz", @@ -3601,6 +3601,21 @@ "geçerli çeviri birimi için bir başlık birimi oluşturulamadı", "mevcut çeviri birimi şu anda bir başlık birimine yazılamayan bir veya daha fazla özellik kullanıyorsa", "'explicit(bool)' bir C++20 özelliğidir", + "first argument must be a pointer to integer, enum, or supported floating-point type", + "C++ modules cannot be used when compiling multiple translation units", + "C++ modules cannot be used with the pre-C++11 \"export\" feature", + "the IFC token %sq is not supported", + "the \"pass_object_size\" attribute is only valid on parameters of function declarations", + "the argument of the %sq attribute %d1 must be a value between 0 and %d2", + "a ref-qualifier here is ignored", + "invalid NEON vector element type %t", + "invalid NEON polyvector element type %t", + "invalid scalable vector element type %t", + "invalid number of tuple elements for scalable vector type", + "a NEON vector or polyvector must be either 64 or 128 bits wide", + "sizeless type %t is not allowed", + "an object of the sizeless type %t cannot be value-initialized", + "unexpected null declaration index found as part of scope %u", "%sq dosyasına başvuran modül dosyası eşlemesi için bir modül adı belirtilmelidir", "IFC bölümündeki bir düğümün beklenen %sq null dizin değeri alındı", "%nd, %t türüne sahip olamaz", @@ -3629,5 +3644,17 @@ "'ext_vector_type' özniteliği yalnızca bool, tamsayı veya kayan nokta türleri için geçerlidir", "aynı birleşimde birden çok belirleyiciye izin verilmez", "test iletisi", - "'--ms_c++23' kullanabilmek için öykünülen Microsoft sürümü en az 1943 olmalıdır" -] + "'--ms_c++23' kullanabilmek için öykünülen Microsoft sürümü en az 1943 olmalıdır", + "invalid current working directory: %s", + "\"cleanup\" attribute within a constexpr function is not currently supported", + "the \"assume\" attribute can only apply to a null statement", + "assumption failed", + "variable templates are a C++14 feature", + "cannot take the address of a function with a parameter declared with the \"pass_object_size\" attribute", + "all arguments must have the same type", + "the final comparison was %s1 %s2 %s3", + "too many arguments for attribute %sq", + "mantissa string does not contain a valid number", + "floating-point error during constant evaluation", + "inheriting constructor %n ignored for copy/move-like operation" +] \ No newline at end of file diff --git a/Extension/bin/messages/zh-cn/messages.json b/Extension/bin/messages/zh-cn/messages.json index ae52d271c..97d19bf91 100644 --- a/Extension/bin/messages/zh-cn/messages.json +++ b/Extension/bin/messages/zh-cn/messages.json @@ -163,7 +163,7 @@ "无法识别的 #pragma", null, "未能打开临时文件 %sq: %s2", - "临时文件的目录名称太长(%sq)", + null, "函数调用中的参数太少", "浮点常量无效", "%t1 类型的实参与 %t2 类型的形参不兼容", @@ -1828,7 +1828,7 @@ "“auto”函数需要尾随的返回类型", "成员模板不能具有纯说明符", "字符串太长 -- 已忽略多余的字符", - "用于控制 nullptr 关键字的选项只能在编译 C++ 时使用", + null, "std::nullptr_t 已转换为 bool", null, null, @@ -3230,8 +3230,8 @@ "另一匹配是 %t", "已忽略此处使用的 \"availability\" 属性", "在基于范围的 \"for\" 语句中,C++20 样式的初始化表达式语句在此模式下不是标准的", - "co_await 只能应用到基于范围的 for 语句", - "无法在基于范围的 \"for\" 循环中推断范围类型", + "co_await can only apply to a range-based \"for\" statement", + "cannot deduce type of range in range-based \"for\" statement", "内联变量是 C++17 功能", "销毁运算符 delete 需要 %t 作为第一个参数", "销毁运算符 delete 不能具有 std::size_t 和 std::align_val_t 以外的参数", @@ -3272,17 +3272,17 @@ "%sq 不是可导入标头", "不能导入没有名称的模块", "模块不能与自身有接口依赖关系", - "已导入模块 %sq", + "%m has already been imported", "模块文件", "找不到模块 %sq 的模块文件", "无法导入模块文件 %sq", - "预期 %s1,但找到 %s2", + null, "打开模块文件 %sq 时", "未知的分区名称 %sq", - "未知模块文件", - "可导入标头模块文件", - "EDG 模块文件", - "IFC 模块文件", + null, + null, + null, + null, "意外的模块文件", "第二个操作数的类型 %t2 必须与 %t1 大小相同", "类型必须可轻松复制", @@ -3347,7 +3347,7 @@ "找不到要导入的标头“%s”", "模块文件列表中有多个文件与“%s”匹配", "为“%s”找到的模块文件用于其他模块", - "任何类型的模块文件", + null, "无法读取模块文件", "内置函数不可用,因为当前选项不支持 char8_t 类型", null, @@ -3368,7 +3368,7 @@ "无法解释此编译目标的位布局", "IFC 运算符 %sq 没有对应的运算符", "IFC 调用约定 %sq 没有相应的调用约定", - "模块 %sq 包含不受支持的构造", + "%m contains unsupported constructs", "不支持的 IFC 构造: %sq", "__is_signed 不再是从此点开始的关键字", "数组维度必须具有常量无符号整数值", @@ -3417,35 +3417,35 @@ "在此模式下,'if consteval' 和 'if not consteval' 不标准", "在此模式下,在 lambda 声明符中省略 '()' 为不标准操作", "当省略 lambda 参数列表时,不允许使用尾随 Requires 子句", - "已请求模块 %sq 无效分区", - "已请求模块 %sq1 未定义分区(被认为是 %sq2)", + "%m invalid partition requested", + "%m undefined partition (believed to be %sq) requested", null, null, - "已请求模块 %sq1 文件位置 %u1 (相对位置 %u2),针对分区 %sq2 请求 - 溢出其分区的末尾", - "已请求模块 %sq1 文件位置 %u1 (相对位置 %u2),针对分区 %sq2 - 与其分区元素不一致", + "%m file position %u1 (relative position %u2) requested for partition %sq - which overflows the end of its partition", + "%m file position %u1 (relative position %u2) requested for partition %sq - which is misaligned with its partitions elements", "从子域 %sq (相对于节点 %u 的位置)", "来自分区 %sq 元素 %u1(文件位置 %u2,相对位置 %u3)", "Lambda 上的特性是一项 C++23 功能", "标识符 %sq 可能与显示 %p 的视觉上相似的标识符混淆", "此注释包含可疑的 Unicode 格式控制字符", "此字符串包含可能导致意外运行时行为的 Unicode 格式控制字符", - "遇到 %d1 条已抑制警告(处理模块 %sq1 时)", - "遇到 %d1 条已抑制警告(处理模块 %sq1 时)", - "遇到 %d1 条已抑制错误(处理模块 %sq1 时)", - "遇到 %d1 条已抑制错误(处理模块 %sq1 时)", + "%u suppressed warning was encountered while processing %m", + "%u suppressed warnings were encountered while processing %m", + "%u suppressed error was encountered while processing %m", + "%u suppressed errors were encountered while processing %m", "包括", "已抑制", "虚拟成员函数不能具有显式 'this' 参数", "获取显式 'this' 函数的地址需要限定名称", "形成显式 'this' 函数的地址需要 '&' 运算符", "字符串文本无法用于初始化灵活数组成员", - "函数 %sq 定义的 IFC 表示形式无效", + "the IFC representation of the definition of function %sq is invalid", null, "未将 UniLevel IFC 图表用于指定参数", "%u1 参数由 IFC 参数定义图表指定,而 %u2 参数由 IFC 声明指定", "%u1 参数由 IFC 参数定义图表指定,而 %u2 参数由 IFC 声明指定", "%u1 参数由 IFC 参数定义图表指定,而 %u2 参数由 IFC 声明指定", - "缺少函数 %sq 定义的 IFC 表示形式", + "the IFC representation of the definition of function %sq is missing", "函数修饰符不适用于成员模板声明", "成员选择涉及太多嵌套的匿名类型", "操作数之间没有通用类型", @@ -3467,7 +3467,7 @@ "具有不完整枚举类型的位字段或具有无效基类型的不透明枚举", "已尝试使用索引将一个元素从 IFC 分区 %sq 构造到 IFC 分区 %sq2", "分区 %sq 将其条目大小指定为 %u1,正确的大小为 %u2", - "处理模块 %sq1 时遇到意外的 IFC 要求", + "an unexpected IFC requirement was encountered while processing %m", "条件失败,行 %d,%s1: %sq2", "原子约束依赖于自身", "“noreturn”函数具有非 void 返回类型", @@ -3475,9 +3475,9 @@ "不能在成员模板类之外的成员模板定义上指定默认模板参数", "实体重建期间遇到了无效的 IFC 标识符名称 %sq", null, - "模块 %sq 排序值无效", + "%m invalid sort value", "从 IFC 模块加载的函数模板被错误地分析为 %nd", - "未能在模块 %sq 中加载 IFC 实体引用", + "failed to load an IFC entity reference in %m", "来自分区 %sq 元素 %u1(文件位置 %u2,相对位置 %u3)", "对于具有非平凡析构函数的类的类型,不允许使用链式指示符", "显式专用化声明不能是友元声明", @@ -3506,9 +3506,9 @@ null, "无法计算灵活数组成员的初始值设定项", "默认位字段初始化表达式是 C++20 的特性。", - "模块 %sq 的模板参数列表中的参数太多", + "too many arguments in template argument list in %m", "检测到由 %sq 元素 %u1 表示的模板参数(文件位置 %u2,相对位置 %u3)", - "模块 %sq 的模板参数列表中的参数太少", + "too few arguments in template argument list in %m", "在处理由 %sq 元素 %u1 表示的模板参数列表时检测到(文件位置 %u2,相对位置 %u3)", "从作用域内枚举类型 %t 转换为非标准", "解除分配与分配类型不匹配(一种用于数组,另一种不匹配)", @@ -3517,8 +3517,8 @@ "__make_unsigned 仅与非布尔整数和枚举类型兼容", "内部名称 %sq 将从此处视为普通标识符", "访问索引为 %d 的未初始化的子对象", - "IFC 行号 (%u1) 溢出允许的最大值 (%u2) 模块 %sq", - "模块 %sq1 请求了元素 %u (分区 %sq2),此文件位置超出了最大可表示值", + "IFC line number (%u1) overflows maximum allowed value (%u2) %m", + "%m requested element %u of partition %sq, this file position exceeds the maximum representable value", "参数数目不正确。", "未满足对候选项 %n 的约束", "%n 的参数数目与调用不匹配", @@ -3551,7 +3551,7 @@ "无法处理 IFC 文件 %sq", "不支持 IFC 版本 %u1.%u2", "IFC 体系结构 %sq 与当前目标体系结构不兼容", - "模块 %sq1 请求索引 %u,它是对应于 %sq2 的不支持分区的索引", + "%m requests index %u of an unsupported partition corresponding to %sq", "%n 的参数编号 %d 具有无法完成的类型 %t", "%n 的参数编号 %d 具有未完成的类型 %t", "%n 的参数编号 %d 具有抽象类型 %t", @@ -3570,7 +3570,7 @@ "表达式拼接的错误反射(%r)", "已定义 %n (之前的定义 %p)", "infovec 对象未初始化", - "value_of 类型 %t1 与给定的反射(类型为 %t2 的实体)不兼容", + "extract of type %t1 is not compatible with the given reflection (entity with type %t2)", "当前不允许反射重载集", "此内部函数需要模板实例的反射", "运算符的类型 %t1 和 %t2 不兼容", @@ -3601,6 +3601,21 @@ "无法为当前翻译单元创建标头单元", "当前翻译单元使用当前无法写入标头单元的一个或多个功能", "“explicit(bool)” 是 C++20 功能", + "first argument must be a pointer to integer, enum, or supported floating-point type", + "C++ modules cannot be used when compiling multiple translation units", + "C++ modules cannot be used with the pre-C++11 \"export\" feature", + "the IFC token %sq is not supported", + "the \"pass_object_size\" attribute is only valid on parameters of function declarations", + "the argument of the %sq attribute %d1 must be a value between 0 and %d2", + "a ref-qualifier here is ignored", + "invalid NEON vector element type %t", + "invalid NEON polyvector element type %t", + "invalid scalable vector element type %t", + "invalid number of tuple elements for scalable vector type", + "a NEON vector or polyvector must be either 64 or 128 bits wide", + "sizeless type %t is not allowed", + "an object of the sizeless type %t cannot be value-initialized", + "unexpected null declaration index found as part of scope %u", "必须为引用文件 %sq 的模块文件映射指定模块名称", "收到 null 索引值,但应为 IFC 分区 %sq 中的节点", "%nd 不能具有类型 %t", @@ -3629,5 +3644,17 @@ "\"ext_vector_type\" 属性仅适用于布尔值、整数或浮点类型", "不允许将多个指示符加入同一联合", "测试消息", - "正在模拟的 Microsoft 版本必须至少为 1943 才能使用“--ms_c++23”" -] + "正在模拟的 Microsoft 版本必须至少为 1943 才能使用“--ms_c++23”", + "invalid current working directory: %s", + "\"cleanup\" attribute within a constexpr function is not currently supported", + "the \"assume\" attribute can only apply to a null statement", + "assumption failed", + "variable templates are a C++14 feature", + "cannot take the address of a function with a parameter declared with the \"pass_object_size\" attribute", + "all arguments must have the same type", + "the final comparison was %s1 %s2 %s3", + "too many arguments for attribute %sq", + "mantissa string does not contain a valid number", + "floating-point error during constant evaluation", + "inheriting constructor %n ignored for copy/move-like operation" +] \ No newline at end of file diff --git a/Extension/bin/messages/zh-tw/messages.json b/Extension/bin/messages/zh-tw/messages.json index 20f1012bd..3ca365a07 100644 --- a/Extension/bin/messages/zh-tw/messages.json +++ b/Extension/bin/messages/zh-tw/messages.json @@ -163,7 +163,7 @@ "無法辨認的 #pragma", null, "無法開啟暫存檔 %sq: %s2", - "暫存檔的目錄名稱太長 (%sq)", + null, "函式呼叫中的引數太少", "無效的浮點常數", "類型 %t1 的引數與類型 %t2 的參數不相容", @@ -1828,7 +1828,7 @@ "'auto' 函式需要有尾端傳回類型", "成員樣板不能有純虛擬函式規範", "字串常值太長 -- 已忽略額外的字元", - "控制 nullptr 關鍵字的選項只有在編譯 C++ 時才能使用", + null, "std::nullptr_t 已轉換成布林", null, null, @@ -3230,8 +3230,8 @@ "另一個相符項目為 %t", "已忽略此處使用的 'availability' 屬性", "範圍架構 'for' 陳述式中的 C++20 樣式初始設定式陳述式在此模式中不是標準用法", - "co_await 只能套用至範圍架構 for 陳述式", - "無法推算範圍架構 'for' 迴圈中的範圍類型", + "co_await can only apply to a range-based \"for\" statement", + "cannot deduce type of range in range-based \"for\" statement", "內嵌變數為 C++17 功能", "終結運算子 Delete 需要 %t 作為第一個參數", "終結運算子 Delete 不能有除了 std::size_t 與 std::align_val_t 的參數", @@ -3272,17 +3272,17 @@ "%sq 不是可匯入的標頭", "無法匯入沒有名稱的模組", "模組本身不能具有介面相依性", - "已匯入模組 %sq", + "%m has already been imported", "模組檔案", "找不到模組 %sq 的模組檔案", "無法匯入模組檔案 %sq", - "必須為 %s1,但找到 %s2", + null, "在開啟模組檔案 %sq 時", "未知的分割名稱 %sq", - "未知的模組檔案", - "可匯入的標頭模組檔案", - "EDG 模組檔案", - "IFC 模組檔案", + null, + null, + null, + null, "未預期的模組檔案", "第二個運算元 %t2 的類型必須與 %t1 的大小相同", "類型必須可以原樣複製", @@ -3347,7 +3347,7 @@ "找不到要匯入的標頭 '%s'", "模組檔案清單中有多個檔案與 '%s' 相符", "為 '%s' 找到的模組檔案會用於其他模組", - "任何類型的模組檔案", + null, "無法讀取模組檔案", "因為目前的選項不支援 char8_t 類型,所以無法使用內建函式", null, @@ -3368,7 +3368,7 @@ "無法解譯此編譯目標的位元配置", "IFC 運算子 %sq 沒有任何相對應的運算子", "IFC 呼叫慣例 %sq 沒有任何相對應的呼叫慣例", - "模組 %sq 包含不支援的建構", + "%m contains unsupported constructs", "不支援的 IFC 建構: %sq", "__is_signed 從現在起已不再是關鍵字", "陣列維度必須要有不帶正負號的常數整數值", @@ -3417,35 +3417,35 @@ "在此模式中,'if consteval' 和 'if not consteval' 不是標準", "在此模式中,在 Lambda 宣告子中省略 '()' 並非標準", "省略 Lambda 參數清單時,不允許後置 Requires 子句", - "模組 %sq 要求的分割區無效", - "模組 %sq1 已要求未定義的分割區 (相信是 %sq)", + "%m invalid partition requested", + "%m undefined partition (believed to be %sq) requested", null, null, - "模組 %sq1 檔案位置 %u1 (相對位置 %u2) 要求分割區 %sq2 - 溢出其分割區的結尾", - "模組 %sq1 檔案位置 %u1 (相對位置 %u2) 要求分割區 %sq2 - 與其分割區元素對齊錯誤", + "%m file position %u1 (relative position %u2) requested for partition %sq - which overflows the end of its partition", + "%m file position %u1 (relative position %u2) requested for partition %sq - which is misaligned with its partitions elements", "從 subfield %sq (節點 %u 的相對位置)", "從分割區 %sq 元素 %u1 (檔案位置 %u2,相對位置 %u3)", "lambda 上的屬性是 C++23 功能", "識別碼 %sq 可能會與 %p 上視覺類似的識別碼混淆", "此註解包含可疑的 Unicode 格式化控制字元", "此字串包含 Unicode 格式化控制字元,可能會導致非預期的執行時間行為", - "%d1 抑制警告在處理模組 %sq1 時發生", - "%d1 抑制警告在處理模組 %sq1 時發生", - "%d1 抑制錯誤在處理模組 %sq1 時發生", - "%d1 抑制錯誤在處理模組 %sq1 時發生", + "%u suppressed warning was encountered while processing %m", + "%u suppressed warnings were encountered while processing %m", + "%u suppressed error was encountered while processing %m", + "%u suppressed errors were encountered while processing %m", "包括", "抑制", "虛擬成員函式不能有明確的 'this' 參數", "取得明確 'this' 函數的位址需要限定名稱", "形成明確 'this' 函數的位址需要 '&' 運算子", "字串常值不能用來初始化彈性陣列成員", - "函數 %sq 定義的 IFC 表示法無效", + "the IFC representation of the definition of function %sq is invalid", null, "UniLevel IFC 圖表未用來指定參數", "IFC 參數定義圖表指定了 %u1 個參數,而 IFC 宣告則指定了 %u2 個參數", "IFC 參數定義圖表指定了 %u1 個參數,而 IFC 宣告則指定了 %u2 個參數", "IFC 參數定義圖表指定了 %u1 個參數,而 IFC 宣告則指定了 %u2 個參數", - "遺漏函數 %sq 定義的 IFC 標記法", + "the IFC representation of the definition of function %sq is missing", "函數修飾詞不適用於成員範本宣告", "成員選取涉及太多巢狀匿名型別", "運算元之間沒有通用類型", @@ -3467,7 +3467,7 @@ "具有不完整列舉類型的位欄位,或具有無效基底類型的不透明列舉", "已嘗試使用索引從 IFC 磁碟分割 %sq2 將元素建構到 IFC 磁碟分割 %sq", "磁碟分割 %sq 將其項目大小指定為 %u1,但預期為 %u2", - "處理模組 %sq1 時發現未預期的 IFC 需求", + "an unexpected IFC requirement was encountered while processing %m", "第 %d 行 (在 %s1 中) 條件失敗: %sq2", "不可部分完成限制式依賴其本身", "'noreturn' 函數具有非 void 的返回類型", @@ -3475,9 +3475,9 @@ "無法在其類別外的成員範本定義上指定預設範本引數", "實體重建期間發現無效 IFC 識別碼名稱 %sq", null, - "模組 %sq 無效排序值", + "%m invalid sort value", "從 IFC 模組載入的函數範本不正確地剖析為 %nd", - "無法在模組 %sq 中載入 IFC 實體參考", + "failed to load an IFC entity reference in %m", "從分割區 %sq 元素 %u1 (檔案位置 %u2,相對位置 %u3)", "具有非屬性解構函數的類別類型不允許連結指定元", "明確的特殊化宣告不能是 friend 宣告", @@ -3506,9 +3506,9 @@ null, "無法評估彈性陣列成員的初始設定式", "預設的位元欄位初始設定式為 C++20 功能", - "模組 %sq 中範本引數清單中的引數太多", + "too many arguments in template argument list in %m", "偵測到 %sq 元素 %u1 所代表的範本引數 (檔案位置 %u2,相對位置 %u3)", - "模組 %sq 中範本引數清單中的引數太少", + "too few arguments in template argument list in %m", "在處理 %sq 元素 %u1 所代表的範本引數清單時偵測到 (檔案位置 %u2,相對位置 %u3)", "從範圍列舉類型 %t 轉換為非標準", "解除配置和配置種類不相符 (一個是針對陣列,另一個則不是)", @@ -3517,8 +3517,8 @@ "__make_unsigned 只和非布林值整數和列舉類型相容", "在這裡會將內部名稱 %sq 視為一般識別碼", "存取索引 %d 中未初始化的子物件", - "IFC 行號 (%u1) 溢位最大允許值 (%u2) 模組 %sq", - "模組 %sq1 要求的元素 %u 分割區 %sq2,此檔案位置超出可表示的最大值", + "IFC line number (%u1) overflows maximum allowed value (%u2) %m", + "%m requested element %u of partition %sq, this file position exceeds the maximum representable value", "引數數目錯誤", "不符合對候選項目 %n 的限制式", "%n 的參數數目和呼叫不相符", @@ -3551,7 +3551,7 @@ "無法處理 IFC 檔案 %sq", "不支援 IFC 版本 %u1.%u2", "IFC 架構 %sq 與目前的目標架構不相容", - "模組 %sq1 要求索引 %u,其為對應至 %sq2 不支援分割的索引", + "%m requests index %u of an unsupported partition corresponding to %sq", "%n 的參數編號 %d 具有無法完成的類型 %t", "%n 的參數編號 %d 具有不完整的類型 %t", "%n 的參數編號 %d 具有抽象類別型 %t", @@ -3570,7 +3570,7 @@ "運算式 splice 的不良反映 (%r)", "%n 已定義 (先前的定義 %p)", "infovec 物件未初始化", - "value_of 類型 %t1 與給定的反映 (類型為 %t2 的實體) 不相容", + "extract of type %t1 is not compatible with the given reflection (entity with type %t2)", "目前不允許反射多載集", "此內部函式需要範本執行個體的反映", "運算子的 %t1 和 %t2 類型不相容", @@ -3601,6 +3601,21 @@ "無法為目前的編譯單位建立標頭單位", "目前的編譯單位使用一或多個目前無法寫入標頭單位的功能", "'explicit(bool)' 是 C++20 功能", + "first argument must be a pointer to integer, enum, or supported floating-point type", + "C++ modules cannot be used when compiling multiple translation units", + "C++ modules cannot be used with the pre-C++11 \"export\" feature", + "the IFC token %sq is not supported", + "the \"pass_object_size\" attribute is only valid on parameters of function declarations", + "the argument of the %sq attribute %d1 must be a value between 0 and %d2", + "a ref-qualifier here is ignored", + "invalid NEON vector element type %t", + "invalid NEON polyvector element type %t", + "invalid scalable vector element type %t", + "invalid number of tuple elements for scalable vector type", + "a NEON vector or polyvector must be either 64 or 128 bits wide", + "sizeless type %t is not allowed", + "an object of the sizeless type %t cannot be value-initialized", + "unexpected null declaration index found as part of scope %u", "必須為參照檔案的模組檔案對應指定模組名稱 %sq", "收到 Null 索引值,其中預期 IFC 分割區 %sq 中的節點", "%nd 不能有類型 %t", @@ -3629,5 +3644,17 @@ "'ext_vector_type' 屬性只適用於布林值、整數或浮點數類型", "不允許多個指示者進入相同的聯集", "測試訊息", - "模擬的 Microsoft 版本至少須為 1943,才能使用 '--ms_c++23'" -] + "模擬的 Microsoft 版本至少須為 1943,才能使用 '--ms_c++23'", + "invalid current working directory: %s", + "\"cleanup\" attribute within a constexpr function is not currently supported", + "the \"assume\" attribute can only apply to a null statement", + "assumption failed", + "variable templates are a C++14 feature", + "cannot take the address of a function with a parameter declared with the \"pass_object_size\" attribute", + "all arguments must have the same type", + "the final comparison was %s1 %s2 %s3", + "too many arguments for attribute %sq", + "mantissa string does not contain a valid number", + "floating-point error during constant evaluation", + "inheriting constructor %n ignored for copy/move-like operation" +] \ No newline at end of file