fix: localized floating numbers handling#1616
Merged
Interkarma merged 2 commits intoInterkarma:masterfrom Dec 8, 2019
Merged
Conversation
Join correctly writes lists of values with InvariantCulture, but TrySplit does not, leading to parse errors: Failed to split values from 0.65,1.05 System.FormatException: Unknown char: . at System.Double.Parse (System.String s, NumberStyles style, IFormatProvider provider) [0x00000] in <filename unknown>:0 at System.Single.Parse (System.String s, IFormatProvider provider) [0x00000] in <filename unknown>:0 at System.Convert.ToSingle (System.String value, IFormatProvider provider) [0x00000] in <filename unknown>:0 at System.String.System.IConvertible.ToSingle (IFormatProvider provider) [0x00000] in <filename unknown>:0 at System.Convert.ToType (System.Object value, System.Type conversionType, IFormatProvider provider, Boolean try_target_to_type) [0x00000] in <filename unknown>:0 at System.Convert.ChangeType (System.Object value, System.Type conversionType) [0x00000] in <filename unknown>:0 at DaggerfallWorkshop.Game.Utility.ModSupport.ModSettings.Key.TrySplit[Single] (System.String input, Int32 count, System.Single[]& items) [0x00000] in <filename unknown>:0 (Filename: ./Runtime/Export/Debug.bindings.h Line: 43) Failed to split values from 0.8,1 System.FormatException: Unknown char: . at System.Double.Parse (System.String s, NumberStyles style, IFormatProvider provider) [0x00000] in <filename unknown>:0 at System.Single.Parse (System.String s, IFormatProvider provider) [0x00000] in <filename unknown>:0 at System.Convert.ToSingle (System.String value, IFormatProvider provider) [0x00000] in <filename unknown>:0 at System.String.System.IConvertible.ToSingle (IFormatProvider provider) [0x00000] in <filename unknown>:0 at System.Convert.ToType (System.Object value, System.Type conversionType, IFormatProvider provider, Boolean try_target_to_type) [0x00000] in <filename unknown>:0 at System.Convert.ChangeType (System.Object value, System.Type conversionType) [0x00000] in <filename unknown>:0 at DaggerfallWorkshop.Game.Utility.ModSupport.ModSettings.Key.TrySplit[Single] (System.String input, Int32 count, System.Single[]& items) [0x00000] in <filename unknown>:0 (Filename: ./Runtime/Export/Debug.bindings.h Line: 43) Failed to split values from 0.1,0.9 System.FormatException: Unknown char: . at System.Double.Parse (System.String s, NumberStyles style, IFormatProvider provider) [0x00000] in <filename unknown>:0 at System.Single.Parse (System.String s, IFormatProvider provider) [0x00000] in <filename unknown>:0 at System.Convert.ToSingle (System.String value, IFormatProvider provider) [0x00000] in <filename unknown>:0 at System.String.System.IConvertible.ToSingle (IFormatProvider provider) [0x00000] in <filename unknown>:0 at System.Convert.ToType (System.Object value, System.Type conversionType, IFormatProvider provider, Boolean try_target_to_type) [0x00000] in <filename unknown>:0 at System.Convert.ChangeType (System.Object value, System.Type conversionType) [0x00000] in <filename unknown>:0 at DaggerfallWorkshop.Game.Utility.ModSupport.ModSettings.Key.TrySplit[Single] (System.String input, Int32 count, System.Single[]& items) [0x00000] in <filename unknown>:0 (Filename: ./Runtime/Export/Debug.bindings.h Line: 43) Failed to split values from 0.2,0.6 System.FormatException: Unknown char: . at System.Double.Parse (System.String s, NumberStyles style, IFormatProvider provider) [0x00000] in <filename unknown>:0 at System.Single.Parse (System.String s, IFormatProvider provider) [0x00000] in <filename unknown>:0 at System.Convert.ToSingle (System.String value, IFormatProvider provider) [0x00000] in <filename unknown>:0 at System.String.System.IConvertible.ToSingle (IFormatProvider provider) [0x00000] in <filename unknown>:0 at System.Convert.ToType (System.Object value, System.Type conversionType, IFormatProvider provider, Boolean try_target_to_type) [0x00000] in <filename unknown>:0 at System.Convert.ChangeType (System.Object value, System.Type conversionType) [0x00000] in <filename unknown>:0 at DaggerfallWorkshop.Game.Utility.ModSupport.ModSettings.Key.TrySplit[Single] (System.String input, Int32 count, System.Single[]& items) [0x00000] in <filename unknown>:0 (Filename: ./Runtime/Export/Debug.bindings.h Line: 43) Failed to split values from 0.1,0.8 System.FormatException: Unknown char: . at System.Double.Parse (System.String s, NumberStyles style, IFormatProvider provider) [0x00000] in <filename unknown>:0 at System.Single.Parse (System.String s, IFormatProvider provider) [0x00000] in <filename unknown>:0 at System.Convert.ToSingle (System.String value, IFormatProvider provider) [0x00000] in <filename unknown>:0 at System.String.System.IConvertible.ToSingle (IFormatProvider provider) [0x00000] in <filename unknown>:0 at System.Convert.ToType (System.Object value, System.Type conversionType, IFormatProvider provider, Boolean try_target_to_type) [0x00000] in <filename unknown>:0 at System.Convert.ChangeType (System.Object value, System.Type conversionType) [0x00000] in <filename unknown>:0 at DaggerfallWorkshop.Game.Utility.ModSupport.ModSettings.Key.TrySplit[Single] (System.String input, Int32 count, System.Single[]& items) [0x00000] in <filename unknown>:0 (Filename: ./Runtime/Export/Debug.bindings.h Line: 43) Failed to split values from 0,1.1 System.FormatException: Unknown char: . at System.Double.Parse (System.String s, NumberStyles style, IFormatProvider provider) [0x00000] in <filename unknown>:0 at System.Single.Parse (System.String s, IFormatProvider provider) [0x00000] in <filename unknown>:0 at System.Convert.ToSingle (System.String value, IFormatProvider provider) [0x00000] in <filename unknown>:0 at System.String.System.IConvertible.ToSingle (IFormatProvider provider) [0x00000] in <filename unknown>:0 at System.Convert.ToType (System.Object value, System.Type conversionType, IFormatProvider provider, Boolean try_target_to_type) [0x00000] in <filename unknown>:0 at System.Convert.ChangeType (System.Object value, System.Type conversionType) [0x00000] in <filename unknown>:0 at DaggerfallWorkshop.Game.Utility.ModSupport.ModSettings.Key.TrySplit[Single] (System.String input, Int32 count, System.Single[]& items) [0x00000] in <filename unknown>:0 Other issue is related to float tuples deserialization; For example ConvenientClock allows to set clock scale, correctly write this setting in InvariantCulture format, but is not restored in game (clock stays at its nominal size).
Collaborator
Author
|
@TheLacus there's another localization issue with float input fields:
|
Collaborator
Author
|
Ah, the dot is hardcoded in |
Assumes negative sign and decimal separator are single characters
Owner
|
Thank you for fixing this. :) |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Fixes two issues that only happen in some locales (like french) that do not use the dot as floating point separator:
Failed to split values from 0.65,1.05
System.FormatException: Unknown char: .
at System.Double.Parse (System.String s, NumberStyles style,
IFormatProvider provider) [0x00000] in :0
at System.Single.Parse (System.String s, IFormatProvider provider)
[0x00000] in :0
at System.Convert.ToSingle (System.String value, IFormatProvider
provider) [0x00000] in :0
at System.String.System.IConvertible.ToSingle (IFormatProvider
provider) [0x00000] in :0
at System.Convert.ToType (System.Object value, System.Type
conversionType, IFormatProvider provider, Boolean try_target_to_type)
[0x00000] in :0
at System.Convert.ChangeType (System.Object value, System.Type
conversionType) [0x00000] in :0
at
DaggerfallWorkshop.Game.Utility.ModSupport.ModSettings.Key.TrySplit[Single]
(System.String input, Int32 count, System.Single[]& items) [0x00000] in
:0
(Filename: ./Runtime/Export/Debug.bindings.h Line: 43)
Failed to split values from 0.8,1
System.FormatException: Unknown char: .
at System.Double.Parse (System.String s, NumberStyles style,
IFormatProvider provider) [0x00000] in :0
at System.Single.Parse (System.String s, IFormatProvider provider)
[0x00000] in :0
at System.Convert.ToSingle (System.String value, IFormatProvider
provider) [0x00000] in :0
at System.String.System.IConvertible.ToSingle (IFormatProvider
provider) [0x00000] in :0
at System.Convert.ToType (System.Object value, System.Type
conversionType, IFormatProvider provider, Boolean try_target_to_type)
[0x00000] in :0
at System.Convert.ChangeType (System.Object value, System.Type
conversionType) [0x00000] in :0
at
DaggerfallWorkshop.Game.Utility.ModSupport.ModSettings.Key.TrySplit[Single]
(System.String input, Int32 count, System.Single[]& items) [0x00000] in
:0
(Filename: ./Runtime/Export/Debug.bindings.h Line: 43)
Failed to split values from 0.1,0.9
System.FormatException: Unknown char: .
at System.Double.Parse (System.String s, NumberStyles style,
IFormatProvider provider) [0x00000] in :0
at System.Single.Parse (System.String s, IFormatProvider provider)
[0x00000] in :0
at System.Convert.ToSingle (System.String value, IFormatProvider
provider) [0x00000] in :0
at System.String.System.IConvertible.ToSingle (IFormatProvider
provider) [0x00000] in :0
at System.Convert.ToType (System.Object value, System.Type
conversionType, IFormatProvider provider, Boolean try_target_to_type)
[0x00000] in :0
at System.Convert.ChangeType (System.Object value, System.Type
conversionType) [0x00000] in :0
at
DaggerfallWorkshop.Game.Utility.ModSupport.ModSettings.Key.TrySplit[Single]
(System.String input, Int32 count, System.Single[]& items) [0x00000] in
:0
(Filename: ./Runtime/Export/Debug.bindings.h Line: 43)
Failed to split values from 0.2,0.6
System.FormatException: Unknown char: .
at System.Double.Parse (System.String s, NumberStyles style,
IFormatProvider provider) [0x00000] in :0
at System.Single.Parse (System.String s, IFormatProvider provider)
[0x00000] in :0
at System.Convert.ToSingle (System.String value, IFormatProvider
provider) [0x00000] in :0
at System.String.System.IConvertible.ToSingle (IFormatProvider
provider) [0x00000] in :0
at System.Convert.ToType (System.Object value, System.Type
conversionType, IFormatProvider provider, Boolean try_target_to_type)
[0x00000] in :0
at System.Convert.ChangeType (System.Object value, System.Type
conversionType) [0x00000] in :0
at
DaggerfallWorkshop.Game.Utility.ModSupport.ModSettings.Key.TrySplit[Single]
(System.String input, Int32 count, System.Single[]& items) [0x00000] in
:0
(Filename: ./Runtime/Export/Debug.bindings.h Line: 43)
Failed to split values from 0.1,0.8
System.FormatException: Unknown char: .
at System.Double.Parse (System.String s, NumberStyles style,
IFormatProvider provider) [0x00000] in :0
at System.Single.Parse (System.String s, IFormatProvider provider)
[0x00000] in :0
at System.Convert.ToSingle (System.String value, IFormatProvider
provider) [0x00000] in :0
at System.String.System.IConvertible.ToSingle (IFormatProvider
provider) [0x00000] in :0
at System.Convert.ToType (System.Object value, System.Type
conversionType, IFormatProvider provider, Boolean try_target_to_type)
[0x00000] in :0
at System.Convert.ChangeType (System.Object value, System.Type
conversionType) [0x00000] in :0
at
DaggerfallWorkshop.Game.Utility.ModSupport.ModSettings.Key.TrySplit[Single]
(System.String input, Int32 count, System.Single[]& items) [0x00000] in
:0
(Filename: ./Runtime/Export/Debug.bindings.h Line: 43)
Failed to split values from 0,1.1
System.FormatException: Unknown char: .
at System.Double.Parse (System.String s, NumberStyles style,
IFormatProvider provider) [0x00000] in :0
at System.Single.Parse (System.String s, IFormatProvider provider)
[0x00000] in :0
at System.Convert.ToSingle (System.String value, IFormatProvider
provider) [0x00000] in :0
at System.String.System.IConvertible.ToSingle (IFormatProvider
provider) [0x00000] in :0
at System.Convert.ToType (System.Object value, System.Type
conversionType, IFormatProvider provider, Boolean try_target_to_type)
[0x00000] in :0
at System.Convert.ChangeType (System.Object value, System.Type
conversionType) [0x00000] in :0
at
DaggerfallWorkshop.Game.Utility.ModSupport.ModSettings.Key.TrySplit[Single]
(System.String input, Int32 count, System.Single[]& items) [0x00000] in
:0