How do I support Norwegian ("no")?

You could try a culture mapping your DefaultGame.ini file:

[Internationalization]
+CultureMappings="no;nb"

or

[Internationalization]
+CultureMappings="no;nn"

Alternatively, we handle those mappings ourselves so you can change the default in FPS4Misc::GetDefaultLocale. I don’t know how we ended up using “no” as it’s not even a valid culture code… I’ll fix that.

Edit: Weirdly ICU has “no.res” and “nb.res”, but no “nn.res”… curious.

It looks like ICU itself lets you select and use “no” as a culture if you do it manually, but the call to getAvailableLocales in ICU doesn’t include it (which is why you can use it, but not select it as a language in the localization dashboard).

Unreal only supports Norwegian Bokmal (nb) and Norwegian Nynorsk (nn)…but the PS4 only supports generic Norwegian (no).
So how do I make Unreal use the correct culture?

Aha! Will try that, thanks Jamie…

If you go to ICUInternationalization.cpp and add the following:

// getAvailableLocales doesn't always cover all languages that ICU supports, so we spin the language list too and add any that were missed
// Note: getISOLanguages returns the start of an array of const char* null-terminated strings, with a null string signifying the end of the array
for (const char* const* AvailableLanguages = icu::Locale::getISOLanguages(); *AvailableLanguages; ++AvailableLanguages)
{
	FString LanguageCode = UTF8_TO_TCHAR(*AvailableLanguages);
	LanguageCode.ToLowerInline();

	// Only care about 2-letter codes
	if (LanguageCode.Len() == 2)
	{
		AppendCultureData(LanguageCode, FString(), FString());
	}
}

Before this comment:

// Also add our invariant culture if it wasn't found when processing the ICU locales

You should find that “no” now appears as something you can select in the Localization Dashboard.