syjgin
October 9, 2021, 11:33am
1
Hello. After upgrade to the 1.0.3 localization version, I can no more use string like that:
Average speed: {0:0.##} km / h
Reverse speed: {1:0.##} km / h
Average fuel consumption: {2:0.##} l / km
Angular velocity: {3:0.##} ° / s
Fuel: {4: 0. ##} / {5:0.##} l
Total Fuel: {6:0.##}
Fuel power: {7:0.##} l
Armor: {8:0.##}
When I try to use it from code, there are following error:
NullReferenceException: Object reference not set to an instance of an object
UnityEngine.Localization.SmartFormat.Core.Parsing.Parser.HandleParsingErrors (UnityEngine.Localization.SmartFormat.Core.Parsing.ParsingErrors parsingErrors, UnityEngine.Localization.SmartFormat.Core.Parsing.Format currentResult) (at Library/PackageCache/com.unity.localization@1.0.3/Runtime/Smart Format/Core/Parsing/Parser.cs:466)
UnityEngine.Localization.SmartFormat.Core.Parsing.Parser.ParseFormat (System.String format, System.Collections.Generic.IList`1[T] formatterExtensionNames) (at Library/PackageCache/com.unity.localization@1.0.3/Runtime/Smart Format/Core/Parsing/Parser.cs:448)
UnityEngine.Localization.Tables.StringTableEntry.GetOrCreateFormatCache () (at Library/PackageCache/com.unity.localization@1.0.3/Runtime/Tables/StringTable.cs:102)
UnityEngine.Localization.GetLocalizedStringOperation.Execute () (at Library/PackageCache/com.unity.localization@1.0.3/Runtime/Operations/GetLocalizedStringOperation.cs:51)
UnityEngine.ResourceManagement.AsyncOperations.AsyncOperationBase`1[TObject].InvokeExecute () (at Library/PackageCache/com.unity.addressables@1.19.6/Runtime/ResourceManager/AsyncOperations/AsyncOperationBase.cs:474)
UnityEngine.ResourceManagement.AsyncOperations.AsyncOperationBase`1[TObject].Start (UnityEngine.ResourceManagement.ResourceManager rm, UnityEngine.ResourceManagement.AsyncOperations.AsyncOperationHandle dependency, DelegateList`1[T] updateCallbacks) (at Library/PackageCache/com.unity.addressables@1.19.6/Runtime/ResourceManager/AsyncOperations/AsyncOperationBase.cs:469)
UnityEngine.ResourceManagement.ResourceManager.StartOperation[TObject] (UnityEngine.ResourceManagement.AsyncOperations.AsyncOperationBase`1[TObject] operation, UnityEngine.ResourceManagement.AsyncOperations.AsyncOperationHandle dependency) (at Library/PackageCache/com.unity.addressables@1.19.6/Runtime/ResourceManager/ResourceManager.cs:460)
UnityEngine.Localization.Settings.LocalizedStringDatabase.GetLocalizedStringAsync (UnityEngine.Localization.Tables.TableReference tableReference, UnityEngine.Localization.Tables.TableEntryReference tableEntryReference, System.Collections.Generic.IList`1[T] arguments, UnityEngine.Localization.Locale locale, UnityEngine.Localization.Settings.FallbackBehavior fallbackBehavior, UnityEngine.Localization.SmartFormat.PersistentVariables.IVariableGroup localVariables) (at Library/PackageCache/com.unity.localization@1.0.3/Runtime/Settings/Database/LocalizedStringDatabase.cs:215)
UnityEngine.Localization.LocalizedString.GetLocalizedStringAsync (System.Collections.Generic.IList`1[T] arguments) (at Library/PackageCache/com.unity.localization@1.0.3/Runtime/Localized Reference/LocalizedString.cs:287)
UnityEngine.Localization.LocalizedString.GetLocalizedStringAsync () (at Library/PackageCache/com.unity.localization@1.0.3/Runtime/Localized Reference/LocalizedString.cs:239)
Constants.LocalizationUtils+<LocalizationStringsLoadCoroutine>d__3.MoveNext () (at Assets/Scripts/Constants/LocalizationUtils.cs:36)
UnityEngine.SetupCoroutine.InvokeMoveNext (System.Collections.IEnumerator enumerator, System.IntPtr returnValueAddress) (at /home/bokken/buildslave/unity/build/Runtime/Export/Scripting/Coroutines.cs:17)
But with
Average speed: {0:0.##} km / h
Reverse speed: {1:0.##} km / h
Average fuel consumption: {2:0.##} l / km
Angular velocity: {3:0.##} ° / s
Fuel: {4:0.##} / {5:0.##} l
Total Fuel: {6:0.##}
Fuel power: {7:0.##} l
All works fine.
So I have to concatenate from two strings. It’s very strange, that somewhere inside 1.0.3 source code is introduced some hardcoded constant
syjgin:
Hello. After upgrade to the 1.0.3 localization version, I can no more use string like that:
Average speed: {0:0.##} km / h
Reverse speed: {1:0.##} km / h
Average fuel consumption: {2:0.##} l / km
Angular velocity: {3:0.##} ° / s
Fuel: {4: 0. ##} / {5:0.##} l
Total Fuel: {6:0.##}
Fuel power: {7:0.##} l
Armor: {8:0.##}
When I try to use it from code, there are following error:
NullReferenceException: Object reference not set to an instance of an object
UnityEngine.Localization.SmartFormat.Core.Parsing.Parser.HandleParsingErrors (UnityEngine.Localization.SmartFormat.Core.Parsing.ParsingErrors parsingErrors, UnityEngine.Localization.SmartFormat.Core.Parsing.Format currentResult) (at Library/PackageCache/com.unity.localization@1.0.3/Runtime/Smart Format/Core/Parsing/Parser.cs:466)
UnityEngine.Localization.SmartFormat.Core.Parsing.Parser.ParseFormat (System.String format, System.Collections.Generic.IList`1[T] formatterExtensionNames) (at Library/PackageCache/com.unity.localization@1.0.3/Runtime/Smart Format/Core/Parsing/Parser.cs:448)
UnityEngine.Localization.Tables.StringTableEntry.GetOrCreateFormatCache () (at Library/PackageCache/com.unity.localization@1.0.3/Runtime/Tables/StringTable.cs:102)
UnityEngine.Localization.GetLocalizedStringOperation.Execute () (at Library/PackageCache/com.unity.localization@1.0.3/Runtime/Operations/GetLocalizedStringOperation.cs:51)
UnityEngine.ResourceManagement.AsyncOperations.AsyncOperationBase`1[TObject].InvokeExecute () (at Library/PackageCache/com.unity.addressables@1.19.6/Runtime/ResourceManager/AsyncOperations/AsyncOperationBase.cs:474)
UnityEngine.ResourceManagement.AsyncOperations.AsyncOperationBase`1[TObject].Start (UnityEngine.ResourceManagement.ResourceManager rm, UnityEngine.ResourceManagement.AsyncOperations.AsyncOperationHandle dependency, DelegateList`1[T] updateCallbacks) (at Library/PackageCache/com.unity.addressables@1.19.6/Runtime/ResourceManager/AsyncOperations/AsyncOperationBase.cs:469)
UnityEngine.ResourceManagement.ResourceManager.StartOperation[TObject] (UnityEngine.ResourceManagement.AsyncOperations.AsyncOperationBase`1[TObject] operation, UnityEngine.ResourceManagement.AsyncOperations.AsyncOperationHandle dependency) (at Library/PackageCache/com.unity.addressables@1.19.6/Runtime/ResourceManager/ResourceManager.cs:460)
UnityEngine.Localization.Settings.LocalizedStringDatabase.GetLocalizedStringAsync (UnityEngine.Localization.Tables.TableReference tableReference, UnityEngine.Localization.Tables.TableEntryReference tableEntryReference, System.Collections.Generic.IList`1[T] arguments, UnityEngine.Localization.Locale locale, UnityEngine.Localization.Settings.FallbackBehavior fallbackBehavior, UnityEngine.Localization.SmartFormat.PersistentVariables.IVariableGroup localVariables) (at Library/PackageCache/com.unity.localization@1.0.3/Runtime/Settings/Database/LocalizedStringDatabase.cs:215)
UnityEngine.Localization.LocalizedString.GetLocalizedStringAsync (System.Collections.Generic.IList`1[T] arguments) (at Library/PackageCache/com.unity.localization@1.0.3/Runtime/Localized Reference/LocalizedString.cs:287)
UnityEngine.Localization.LocalizedString.GetLocalizedStringAsync () (at Library/PackageCache/com.unity.localization@1.0.3/Runtime/Localized Reference/LocalizedString.cs:239)
Constants.LocalizationUtils+<LocalizationStringsLoadCoroutine>d__3.MoveNext () (at Assets/Scripts/Constants/LocalizationUtils.cs:36)
UnityEngine.SetupCoroutine.InvokeMoveNext (System.Collections.IEnumerator enumerator, System.IntPtr returnValueAddress) (at /home/bokken/buildslave/unity/build/Runtime/Export/Scripting/Coroutines.cs:17)
But with
Average speed: {0:0.##} km / h
Reverse speed: {1:0.##} km / h
Average fuel consumption: {2:0.##} l / km
Angular velocity: {3:0.##} ° / s
Fuel: {4:0.##} / {5:0.##} l
Total Fuel: {6:0.##}
Fuel power: {7:0.##} l
All works fine.
So I have to concatenate from two strings. It’s very strange, that somewhere inside 1.0.3 source code is introduced some hardcoded constant
I can’t see the difference between the 2 strings. Can you please file a bug report so we can look into it?
syjgin
October 10, 2021, 8:12am
3
Difference is the last segment: “Armor: {8:0.##}”. I will fire a bug report today
1 Like
syjgin
October 10, 2021, 9:52am
4