I've been playing with the idea and I came up with a little "patch" that may be added to a channel and will try to fix this issue. Here's the link to the repo:
https://bitbucket.org/czukowski/plex-locale-patch
I've tried that with my channel and now it suddenly appears translated not only in Plex Home Theater and Plex Web, but even when I look at its raw XML in a browser! All of it after adding only one or two lines to the channel code.
See Readme (or the source code) in the repository for more detailed description.
p.s.: I took the liberty of marking this post as a solution.
Take in mind though the hard work is done only once you are doing a function call to initialize_locale on each call to L function. And besides, don't know exactly why, you have decided to use Request.Headers as a global store. Storing in it the value of a flag you wanted to check later in each call to initialize_locale. That doesn't look to me a good practice at all.
But that is not the worst part. You can try to correct that.
The worst part is that it is still not bulletproof.
If I recall correctly you said Plex Home Theater sends X-Plex-Language header and not Accept-Language. So only the X-Plex-Language is going to be taking into account in that case.
If I recall correctly too you said in your case it sends "rus" as the value.
So, indeed, it is working for you because Locale.Language.Match("rus") matches "ru" correctly. But that doesn't mean the same will happen to the rest of locales. For example "bra" will not match and returns "xx" instead of the "pb" value expected by Plex Locale API. It is not even able to match "esp" to "es". I have not tested but almost 100% sure won't match "prt" to "pt". In resume, Locale.Language.Match is not meant to turn ISO 3166 codes into Plex Locale API codes (which is mostly ISO 639-1 but not exactly).
So Plex Home Theater issue will not be solved with that code. In some cases? Yes, probably there are more cases like "rus" that match correctly. But I bet many will fail as well. Probably more than the ones that work.
About Plex Web and if you parsed correctly Accept-Language into two characters it will. But still won't work in all cases like portuguese do brazil because "pb" used in Plex Local API is not a standard language code. Don't know if any other of the values in Plex Locale API are not standard codes. Though it seems only "pb" is the intruder and if you parse the first two characters of any language code in Accept-Language those will match the values in Plex Local API correctly.
So Plex Web issue is better mitigated by your code. Almost 100% I bet.
----------------------
I just prefer to include a configuration option in the channel code to choose from one of the languages the channel is translated into and use that preference to set the Locale.DefaultLocale just once on channel start function as described previously. Everything will work that way. And any client that has Plex Locale API implemented correctly will work as intended without interference by that code.
And anyway the only solution is that Plex Clients developers and/or Plex Core developers correct this to make it work as expected. Because, at least in my case, I don't want just any channel I code localized but any channel I install from other developer localized too and I'm not going to edit other channels code, amount other things, because my changes will be lost on each update. :(