When set the current asset group language in a particular process, the asset refers to the "source asset" and output warning log.
LogPackageLocalizationCache: Warning: Skipping the cache update for %d pending package path(s) due to a cache request from a non-game thread. Some localized packages may be missed for this query.
The following code is a workaround for updating the cache of the asset group when changing the localized language.
Workaround
Adding update asset group culture cache when changing the culture.
\Engine\Source\Runtime\CoreUObject\Private\Internationalization\PackageLocalizationCache.cpp void FPackageLocalizationCache::HandleCultureChanged() { FScopeLock Lock(&LocalizedCachesCS); // Clear out all current caches and re-scan for the current culture CurrentCultureCache.Reset(); AllCultureCaches.Empty(); const FString CurrentCultureName = FInternationalization::Get().GetCurrentLanguage()->GetName(); CurrentCultureCache = FindOrAddCacheForCulture_NoLock(CurrentCultureName); if (CurrentCultureCache.IsValid()) { // We expect culture changes to happen on the game thread, so update the cache now while it is likely safe to do so // (ConditionalUpdateCache will internally check that this is currently the game thread before allowing the update) CurrentCultureCache->ConditionalUpdateCache(); } // <extension> // Adding the Culture of AssetGroupLocalization FInternationalization::FCultureStateSnapshot CultureStateSnapshot; FInternationalization::Get().BackupCultureState(CultureStateSnapshot); TSet<FString> UniqueCultures; for (auto& AssetGroup : CultureStateSnapshot.AssetGroups) { if (!UniqueCultures.Contains(AssetGroup.Value)) { if (TSharedPtr<FPackageLocalizationCultureCache> CultureCache = FindOrAddCacheForCulture_NoLock(AssetGroup.Value)) { CultureCache->ConditionalUpdateCache(); } UniqueCultures.Add(MoveTemp(AssetGroup.Value)); } } // </extension> ConditionalUpdatePackageNameToAssetGroupCache_NoLock(); }
Repro Steps
1. Open attached project in editor.
2. Packaging project with Win64.
3. Launch package application and wait around 5 sec.
(automatically process in StartupMap)
SetCurrentLanguageAndLocale(ja) -> SetCurrentLanguageAndLocale(en) -> SetCurrentLanguageAndLocale(ja) -> SetCurrentAssetGroup(en) -> OpenLevel(LocalizationMap).
4. After moving level, press Langugae button.
Result:
Play sound source asset.
Expected:
Play sound localized asset (en).
The Asset Group (Audio) is set to "en". So expect "en" in the Asset Group to be selected even if the current language is "ja".
error message when install in U.E 5.3 - IS-IN-FCO2-82
I am not able to find world outliner how to enable it?
Undefined sysmbol: typeinfo for AActor when cross-compile linux dedicated server on windows
How can i modify the param name in EQS node
How to achieve HLSL Multiple Render Target in Material blueprints?
Delay nodes occasionally don't fire the "Completed" output in a nativized build
What properties of the progress bar can be used for drag and drop highlighting?
What property of the Slider is the image used when dragging?
There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-103591 in the post.
0 |
Component | UE - Editor - UI Systems - Localization |
---|---|
Affects Versions | 4.25 |
Target Fix | 5.0 |
Fix Commit | 14850903 |
---|---|
Release Commit | 16054421 |
Created | Nov 22, 2020 |
---|---|
Resolved | Dec 3, 2020 |
Updated | Nov 30, 2022 |