Runtime localization node

I made a full blueprint project and i have to localize my game with the Localization Dashboard. There is a way (mayabe a node) to change Localization at Runtime without C++? Thanks!

Hi Jamie, i found a console command to change the current culture at runtime ("-culture=it-IT"), having this setted in dashboard.

I execute it with the “execute console command” node, and it works without C++ classes.

Is it a correct way to resolve this issue without C++?

Not currently, although I have added one for 4.17. For now you’ll have to make your own UFUNCTION and expose it to BPs.

For your reference, this is the version I added for 4.17:

// .h

/**
 * Set the current culture.
 * @note This function is a sledgehammer, and will set both the language and locale, as well as clear out any asset group cultures that may be set.
 * @param Culture The culture to set, as an IETF language tag (eg, "zh-Hans-CN").
 * @param SaveToConfig If true, save the new setting to the users' "GameUserSettings" config so that it persists after a reload.
 * @return True if the culture was set, false otherwise.
 */
UFUNCTION(BlueprintCallable, Category="Utilities|Internationalization", meta=(AdvancedDisplay="1"))
static bool SetCurrentCulture(const FString& Culture, const bool SaveToConfig = false);


// .cpp

bool UKismetInternationalizationLibrary::SetCurrentCulture(const FString& Culture, const bool SaveToConfig)
{
	if (FInternationalization::Get().SetCurrentCulture(Culture))
	{
		if (!GIsEditor && SaveToConfig)
		{
			GConfig->SetString(TEXT("Internationalization"), TEXT("Culture"), *Culture, GGameUserSettingsIni);
			GConfig->EmptySection(TEXT("Internationalization.AssetGroupCultures"), GGameUserSettingsIni);
			GConfig->Flush(false, GGameUserSettingsIni);
		}
		return true;
	}

	return false;
}

This changes the active culture, and also has an option to persist the new setting to the users’ game config so it’s applied automatically on the next run.

I’ve just checked the code (those are handled by UEngine::Exec) and unfortunately those are wrapped in #if ENABLE_LOC_TESTING which means they won’t work in a shipping build.

There’s no real reason for them to be disabled in a shipping build, so I’m going to change that… although you won’t see that change until 4.17, at which point there will also be a proper BP node built-in.

i understand, thanks!

Great, after a while looking for this finally it seems that there is a BP solution!!
(i’m already with 4.18)

I just check and yes there is a node set culture

so thanks @Jamie Dale

and really thanks to @Rosterbyte to find the solution!!

Ok testing it, I can change the language after compilation, not during the testing. but any case that is already great!!