diff options
| author | Cody Robibero <cody@robibe.ro> | 2026-05-14 18:57:11 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2026-05-14 18:57:11 -0400 |
| commit | 0a5a1f135f3fbf473a626c3935ef13c465cf158e (patch) | |
| tree | ad343024dd54de1afe0222ade9d411d9d09a6fd5 /MediaBrowser.Controller/Net | |
| parent | e6e19e3ce01f63d177453e0ba30851b8f75838d2 (diff) | |
| parent | 7a5181c3fd3aea8a9913fe07086970c39c9bc1c4 (diff) | |
Add Accept-Language header support and cleanup translations (#16488)
* Add Accept-Language header support for per-request localization
* Use native middleware
* Cleanup
* Add Fallback
* Build BCP47 map reflexively
* Address review comments
Diffstat (limited to 'MediaBrowser.Controller/Net')
| -rw-r--r-- | MediaBrowser.Controller/Net/BasePeriodicWebSocketListener.cs | 5 | ||||
| -rw-r--r-- | MediaBrowser.Controller/Net/IWebSocketConnection.cs | 9 |
2 files changed, 14 insertions, 0 deletions
diff --git a/MediaBrowser.Controller/Net/BasePeriodicWebSocketListener.cs b/MediaBrowser.Controller/Net/BasePeriodicWebSocketListener.cs index 6b1eac8047..2bcce168cf 100644 --- a/MediaBrowser.Controller/Net/BasePeriodicWebSocketListener.cs +++ b/MediaBrowser.Controller/Net/BasePeriodicWebSocketListener.cs @@ -209,6 +209,11 @@ namespace MediaBrowser.Controller.Net var (connection, cts, state) = tuple; var cancellationToken = cts.Token; + // Restore the culture context captured when the connection was established + // so that GetDataToSendForConnection produces a localized payload matching + // the client's Accept-Language preference rather than the server default. + connection.ApplyRequestCulture(); + var data = await GetDataToSendForConnection(connection).ConfigureAwait(false); if (data is null) { diff --git a/MediaBrowser.Controller/Net/IWebSocketConnection.cs b/MediaBrowser.Controller/Net/IWebSocketConnection.cs index bdc0f9a10f..48431e75c3 100644 --- a/MediaBrowser.Controller/Net/IWebSocketConnection.cs +++ b/MediaBrowser.Controller/Net/IWebSocketConnection.cs @@ -77,5 +77,14 @@ namespace MediaBrowser.Controller.Net /// <param name="cancellationToken">The cancellation token.</param> /// <returns>Task.</returns> Task ReceiveAsync(CancellationToken cancellationToken = default); + + /// <summary> + /// Applies the culture context captured when the connection was established + /// (from the upgrade request's <c>Accept-Language</c> header) to the current + /// async flow. Server-initiated message senders should call this before + /// localising any payload so that the response uses the client's preferred + /// language rather than the server default. + /// </summary> + void ApplyRequestCulture(); } } |
