Localized file check-in by OneLocBuild Task: Build definition ID 9434: Build ID 13982412#13656
Localized file check-in by OneLocBuild Task: Build definition ID 9434: Build ID 13982412#13656dotnet-bot wants to merge 3 commits into
Conversation
…: Build ID 13980159
…: Build ID 13980159
…: Build ID 13980159
There was a problem hiding this comment.
Localization PR Review — OneLocBuild #13980159
✅ Structural Integrity
- All 91 changed files are
.xlflocalization files — no unexpected file types. - No
<source>elements or<note>elements were modified. - No trans-units were added or removed.
- XML structure is well-formed across all files.
✅ Format Specifiers
All format specifiers ({0}, {1}, etc.) are preserved correctly in all translated strings. No mismatches between source and target placeholders.
✅ Positive Changes
4 French translations (MissingGetItemError, MissingGetPropertyError, MissingGetTargetResultError, SolutionBuildInvalidForCommandLineEvaluation) are correctly going from state="new" to state="translated" with proper French text. 👍
⚠️ Issue 1: Missing spaces after format specifiers in Czech (2 strings)
In src/Build/Resources/xlf/Strings.cs.xlf:
BuildCheck_BC0301_MessageFmt:Umístění {0}nemůže— missing space between{0}andnemůže. At runtime the substituted value will run directly into the next word.UnknownLoggingType:není pro {1}srozumitelný— missing space between{1}andsrozumitelný.
These will produce garbled output like C:\Downloadsnemůže být plně důvěryhodné.
⚠️ Issue 2: 416 translation state regressions (translated → new)
This is the most significant concern. 32 unique trans-unit IDs across all 13 languages are having their translations reverted to English source text with state="new". This means users will see English instead of their localized language for these strings.
Affected trans-unit IDs (32):
BuildEngineCallbacksInTaskHostUnsupported, CannotConvertStringToBool, CollectionIsReadOnly, ConflictingTaskAssembly, CouldNotGenerateReferenceAssemblyDirectory, DebugPathTooLong, DotnetHostPathNotSet, Exec.CommandExitedZeroWithErrors, ExpectedEventToBeSerializable, FailedCreatingTempFile, GenerateResource.STRPropertySkippedInvalidIdentifier, GenerateResource.STRPropertySkippedNameCollision, GenerateResource.STRPropertySkippedReservedName, GenerateResource.STRPropertySkippedVoidType, GlobExpansionFailed, InvalidAttributeMetadata, InvalidFilespecForTransform, InvalidGetPathOfFileAboveParameter, ModifyingTaskHostEnvironmentHeader, ModifyingTaskHostEnvironmentVariable, PathTooLong, Shared.CannotChangeItemSpecModifiers, Shared.InvalidFilespecForTransform, Shared.ParameterCannotBeNull, Shared.ParameterCannotHaveZeroLength, Shared.PathTooLong, TaskNotMarshalByRef, ToolTask.ToolCommandExitedZeroWithErrors, UnsupportedFrameworkVersion, UnsupportedFrameworkVersionForWindowsSdk, UnsupportedVisualStudioVersion, Xaml.CommandExitedZeroWithErrors
Affected file areas:
src/Framework/Resources/xlf/SR.*.xlf— 13 filessrc/MSBuildTaskHost/Resources/xlf/SR.*.xlf— 13 filessrc/Tasks/Resources/xlf/Strings.*.xlf— 10 filessrc/Build/Resources/xlf/Strings.*.xlf— 13 filessrc/Utilities/Resources/xlf/Strings.*.xlf— 11 filessrc/Shared/Resources/xlf/Strings.shared.zh-Hant.xlf— 1 file
This is a known pattern with OneLocBuild when source strings are modified — the localization pipeline resets affected strings to state="new" until they are re-translated downstream. If that's the case here, this is expected and the strings will be translated in a subsequent localization PR. However, if these source strings have not actually changed, this would indicate a pipeline issue worth investigating.
Summary
The translation quality improvements in this PR are good, but the 2 Czech spacing bugs should be filed for correction, and the 416 state regressions should be confirmed as intentional (source string changes awaiting re-translation) rather than accidental translation loss.
Generated by Expert Code Review (on open) for issue #13656 · ● 4.7M
| <trans-unit id="BuildCheck_BC0301_MessageFmt"> | ||
| <source>Location: '{0}' cannot be fully trusted, place your projects outside of that folder (Project: {1}).</source> | ||
| <target state="translated">Umístění: '{0}' nelze plně považovat za důvěryhodné, umístěte projekty mimo danou složku (Projekt: {1}).</target> | ||
| <target state="translated">Umístění {0}nemůže být plně důvěryhodné. Umístěte projekty mimo danou složku (projekt: {1}).</target> |
There was a problem hiding this comment.
Bug: Missing space after format specifier {0}
The translated string has {0}nemůže — the format placeholder {0} is directly followed by the word nemůže with no space. At runtime, when {0} is replaced (e.g. with a path like C:\Downloads), the output will be C:\Downloadsnemůže být plně důvěryhodné. — the path runs directly into the Czech word.
Previous translation correctly had a colon and quotes: Umístění: '{0}' nelze plně považovat za důvěryhodné
Should be: Umístění {0} nemůže být plně důvěryhodné. (with a space before nemůže).
| <trans-unit id="UnknownLoggingType"> | ||
| <source>Logging type {0} is not understood by {1}.</source> | ||
| <target state="translated">{1} nerozumí {0} typu protokolování.</target> | ||
| <target state="translated">Typ protokolování {0} není pro {1}srozumitelný.</target> |
There was a problem hiding this comment.
Bug: Missing space after format specifier {1}
The translated string has {1}srozumitelný — the format placeholder {1} runs directly into the word srozumitelný. At runtime, when {1} is replaced, the output will have no space between the substituted value and the following word.
Should be: ...není pro {1} srozumitelný. (with a space before srozumitelný).
| <trans-unit id="DotnetHostPathNotSet"> | ||
| <source>DOTNET_HOST_PATH is not set. Cannot determine runtime location for app host bootstrap. This should always be set when running under the .NET SDK.</source> | ||
| <target state="translated">DOTNET_HOST_PATH není nastaven. Nelze určit umístění modulu runtime pro spuštění hostitele aplikace. Tato možnost by se měla nastavit vždy při spuštění v sadě .NET SDK.</target> | ||
| <target state="new">DOTNET_HOST_PATH is not set. Cannot determine runtime location for app host bootstrap. This should always be set when running under the .NET SDK.</target> |
There was a problem hiding this comment.
Translation regression: state="translated" → state="new"
This string (DotnetHostPathNotSet) was previously translated into Czech and is now being reverted to English with state="new". Users will see untranslated English text.
This same regression pattern affects 416 strings total across all 13 languages (32 unique trans-unit IDs). See the overall review summary for the full list.
This is the pull request automatically created by the OneLocBuild task in the build process to check-in localized files generated based upon translation source files (.lcl files) handed-back from the downstream localization pipeline. If there are issues in translations, visit https://aka.ms/icxLocBug and log bugs for fixes. The OneLocBuild wiki is https://aka.ms/onelocbuild and the localization process in general is documented at https://aka.ms/AllAboutLoc.