Spotfire Analyst crashes with error "Customized cultures cannot be passed by LCID, only by name."

Spotfire Analyst crashes with error "Customized cultures cannot be passed by LCID, only by name."

book

Article ID: KB0080292

calendar_today

Updated On:

Products Versions
Spotfire Analyst 7.14 and lower

Description

In Spotfire Analyst, when doing formatting via Visualization Properties > Formatting or Edit > Column Properties, you may get an unhandled exception with error message "Customized cultures cannot be passed by LCID, only by name." appearing in the log. This is due to having set Windows culture/format to a, to Spotfire, unknown option. The setting is found in Control Panel > Category "Clock and Region" > "Region" > "Change date, time, or number formats". Two reported options are English (World) and English (Belgium).

Exception / stack trace in version 7.12 (very similar or identical in 7.10 and 7.11):

System.TypeInitializationException: The type initializer for 'Spotfire.Dxp.Data.Formatters.NumberSettings' threw an exception. ---> System.ArgumentException: Customized cultures cannot be passed by LCID, only by name.
Parameter name: culture
   at System.Globalization.RegionInfo..ctor(Int32 culture)
   at Spotfire.Dxp.Data.Formatters.NumberSettings.InitCurrencies()
   at Spotfire.Dxp.Data.Formatters.NumberSettings..cctor()
   --- End of inner exception stack trace ---
   at Spotfire.Dxp.Forms.Data.Formatter.CurrencySettingsControl.UpdateCurrenciesComboBox(Boolean populate)
   at Spotfire.Dxp.Forms.Data.Formatter.CurrencySettingsControl.RefreshAll(Boolean populate)
   at Spotfire.Dxp.Forms.Data.Formatter.CurrencySettingsControl.SetFormatter(DataFormatterBase formatter)
   at Spotfire.Dxp.Forms.Data.Formatter.FormattingControl.RetrieveFormatterControlsFromType(DataType dataType, FormattingTypes formatterType)
   at Spotfire.Dxp.Forms.Data.Formatter.FormattingControl.PerformUpdateAvailableFormattingCategories(Boolean dialogIsEnabled)
   at Spotfire.Dxp.Forms.Data.Formatter.FormattingControl.UpdateAvailableFormattingCategories(Boolean enableTheControl)
   at Spotfire.Dxp.Forms.Data.Formatter.FormattingControl.UpdateUI(Boolean enableTheControl)
   at Spotfire.Dxp.Forms.Visuals.Plots.FormattingPropertyPage.UpdateFormattingControl()
   at Spotfire.Dxp.Forms.Visuals.Plots.FormattingPropertyPage.UpdateControlsHandler()
   at Spotfire.Dxp.Forms.Visuals.Plots.FormattingPropertyPage.<OnUpdateControls>b__4(Int32 dummyResult)
   at Spotfire.Dxp.Framework.Threading.AsynchronousGreedyComputer`2.HandleAncestorVisibleChanged(Object sender, EventArgs eventArgs)
   at System.Windows.Forms.Control.OnVisibleChanged(EventArgs e)
   at System.Windows.Forms.Control.WmShowWindow(Message& m)
   at System.Windows.Forms.Control.WndProc(Message& m)
   at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)


Exception / stack trace 7.14:

System.Collections.Generic.KeyNotFoundException: The given key was not present in the dictionary.
   at System.ThrowHelper.ThrowKeyNotFoundException()
   at System.Collections.Generic.Dictionary`2.get_Item(TKey key)
   at Spotfire.Dxp.Forms.Data.Formatter.CurrencySettingsControl.UpdateCurrenciesComboBox(Boolean populate)
   at Spotfire.Dxp.Forms.Data.Formatter.CurrencySettingsControl.RefreshAll(Boolean populate)
   at Spotfire.Dxp.Forms.Data.Formatter.CurrencySettingsControl.SetFormatter(DataFormatterBase formatter)
   at Spotfire.Dxp.Forms.Data.Formatter.FormattingControl.RetrieveFormatterControlsFromType(DataType dataType, FormattingTypes formatterType)
   at Spotfire.Dxp.Forms.Data.Formatter.FormattingControl.PerformUpdateAvailableFormattingCategories(Boolean dialogIsEnabled)
   at Spotfire.Dxp.Forms.Data.Formatter.FormattingControl.UpdateAvailableFormattingCategories(Boolean enableTheControl)
   at Spotfire.Dxp.Forms.Data.Formatter.FormattingControl.UpdateUI(Boolean enableTheControl)
   at Spotfire.Dxp.Forms.Visuals.Plots.FormattingPropertyPage.UpdateFormattingControl()
   at Spotfire.Dxp.Forms.Visuals.Plots.FormattingPropertyPage.UpdateControlsHandler()
   at Spotfire.Dxp.Forms.Visuals.Plots.FormattingPropertyPage.<>c__DisplayClass10_0.<OnUpdateControls>b__2(Int32 dummyResult)
   at Spotfire.Dxp.Framework.Threading.AsynchronousGreedyComputer`2.HandleAncestorVisibleChanged(Object sender, EventArgs eventArgs)
   at System.Windows.Forms.Control.OnVisibleChanged(EventArgs e)
   at System.Windows.Forms.Control.WmShowWindow(Message& m)
   at System.Windows.Forms.Control.WndProc(Message& m)
   at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

Issue/Introduction

While formatting a visualization in Spotfire Analyst, you may get an unhandled exception with error message "Customized cultures cannot be passed by LCID, only by name."

Environment

Spotfire Analyst version 7.14 or lower on Windows 10

Resolution

This has been fixed in hotfixes for TIBCO Spotfire versions 7.10, 7.11 and 7.14. 

See information about hotfixes here: https://community.tibco.com/wiki/list-hotfixes-tibco-spotfire-clients-analyst-web-player-consumerbusiness-author-and-automation

Specific hotfix versions containing this fix (also included in any later hotfix versions):
  • 7.10.2 HF-012
  • 7.11.1 HF-011
  • 7.14.0 HF-002

There is also a workaround available, which is to change the Windows culture/format to a known format, for example English(UK) or English(US).