* Added condition to display concatenated text if artist count is over 10. Fixed#4228
* Added string to strings.json. Used globalize.translate()
* Moved code to getArtistLinksHtml function
* Update src/controllers/itemDetails/index.js
Co-authored-by: Bill Thornton <thornbill@users.noreply.github.com>
* Simplify appending other artists string
* Update src/controllers/itemDetails/index.js
Co-authored-by: Bill Thornton <thornbill@users.noreply.github.com>
* Update src/controllers/itemDetails/index.js
Co-authored-by: felix920506 <felix920506@gmail.com>
* Update src/strings/en-us.json
Co-authored-by: felix920506 <felix920506@gmail.com>
---------
Co-authored-by: AJ <ajdlc@protonmail.com>
Co-authored-by: Bill Thornton <thornbill@users.noreply.github.com>
Co-authored-by: felix920506 <felix920506@gmail.com>
Fix chapter name XSS injection in progress bar
Original-merge: 7eb54e029f2316caf893126e9647a03165b10e84
Merged-by: thornbill <thornbill@users.noreply.github.com>
Backported-by: Joshua M. Boniface <joshua@boniface.me>
Fix video osd not hiding in experimental layout
Original-merge: ea1d069e90d3537eed7e49a98dd4a3b84d1d8c32
Merged-by: thornbill <thornbill@users.noreply.github.com>
Backported-by: Joshua M. Boniface <joshua@boniface.me>
Fixes
```
System.FormatException: AudioInfo is not a valid value for ItemFields.
---> System.ArgumentException: Requested value 'AudioInfo' was not found.
at System.Enum.TryParseByName[TStorage](RuntimeType enumType, ReadOnlySpan`1 value, Boolean ignoreCase, Boolean throwOnFailure, TStorage& result)
at System.Enum.TryParseByValueOrName[TUnderlying,TStorage](RuntimeType enumType, ReadOnlySpan`1 value, Boolean ignoreCase, Boolean throwOnFailure, TUnderlying& result)
at System.Enum.TryParse(Type enumType, ReadOnlySpan`1 value, Boolean ignoreCase, Boolean throwOnFailure, Object& result)
at System.ComponentModel.EnumConverter.ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, Object value)
--- End of inner exception stack trace ---
at System.ComponentModel.EnumConverter.ConvertFrom(ITypeDescriptorContext context, CultureInfo culture, Object value)
at Jellyfin.Api.ModelBinders.CommaDelimitedArrayModelBinder.GetParsedResult(IReadOnlyList`1 values, Type elementType, TypeConverter converter) in /home/bond/dev/jellyfin/Jellyfin.Api/ModelBinders/CommaDelimitedArrayModelBinder.cs:line 67
```
The dialog on the player could present a large list, requiring scrolling to find the desired option, such as a subtitle or audio track in a huge language list. Changing the volume in these cases will be very annoying.