Class LanguageManager
java.lang.Object
dev.ua.theroer.magicutils.lang.LanguageManager
Platform-agnostic language manager.
-
Constructor Summary
ConstructorsConstructorDescriptionLanguageManager(Platform platform, ConfigManager configManager) Create a language manager bound to a specific platform.LanguageManager(Object platformOrPlugin, ConfigManager configManager) Create a language manager, resolving aPlatformfrom the provided platform or legacy plugin instance. -
Method Summary
Modifier and TypeMethodDescriptionvoidPersist currently loaded MagicUtils messages (ensures defaults exist).Binds automatic player locale synchronization to the manager platform.bindClientLocaleSync(Platform targetPlatform) Binds automatic player locale synchronization to the provided platform.voidRemove stored auto-detected language for an arbitrary player object.voidclearAutoDetectedPlayerLanguage(UUID playerId) Remove stored auto-detected language for a player.voidclearPlayerLanguage(Object player) Remove stored language preference for an arbitrary player object.voidclearPlayerLanguage(UUID playerId) Remove stored language preference for a player.Snapshot of auto-detected player language preferences.List languages available on disk or already loaded.Get metadata for every available language.getMessage(String key) Resolve a message in the current language.getMessageFor(Audience audience, String key) Resolve a message in the audience's preferred language.getMessageIn(String languageCode, String key) Resolve a message in a specific language code.getPlayerLanguage(Object player) Get stored language for a player-like object.getPlayerLanguage(UUID playerId) Get stored language for a player or current language if none.Snapshot of stored player language preferences.booleanhasMessage(String key) booleanhasMessageIn(String languageCode, String key) voidInitialise language manager and load default language (plus fallback if different).booleanloadLanguage(String languageCode) Load a language file into memory.loadLanguageAsync(String languageCode) Load a language asynchronously to avoid blocking the main thread.loadLanguageSmart(String languageCode) Load a language and return a future that completes when loading finishes.voidputCustomMessage(String languageCode, String key, String value) Add or update a custom message for a specific language (or current language when null).intregisterBundledTranslations(String namespace) Loads every/lang/<namespace>/<code>.jsonfile the classpath exposes and registers them as bundled translations for this language manager.voidregisterTranslations(String languageCode, Map<String, String> translations) Register bundled plugin translations for a single language.voidRegister bundled plugin translations for multiple languages.voidreload()Reload all loaded languages from disk.Reload all loaded languages asynchronously.Reload all loaded languages, auto-switching to async on sensitive threads.resolveSupportedLanguageCode(String languageCode) Resolve a supported language code from a client locale tag or language code.voidsaveCustomMessages(String languageCode, Map<String, String> customMessages) Persist custom messages into the language file.booleansetAutoDetectedPlayerLanguage(Audience audience, String languageCode) Assign an auto-detected language for anAudience.booleansetAutoDetectedPlayerLanguage(UUID playerId, String languageCode) Assign an auto-detected language for a player based on client locale data.voidsetFallbackLanguage(String languageCode) Set fallback language used when a key is missing in the current language.booleansetLanguage(String languageCode) Switch the current language for the manager.setLanguageAsync(String languageCode) Switch active language asynchronously.setLanguageSmart(String languageCode) Switch active language, auto-switching to async when on sensitive threads.booleansetPlayerLanguage(Audience audience, String languageCode) Assign a preferred language for anAudience.booleansetPlayerLanguage(Object player, String languageCode) Assign a preferred language for a player-like object (expects getUniqueId()).booleansetPlayerLanguage(UUID playerId, String languageCode) Assign a preferred language for a player.
-
Constructor Details
-
LanguageManager
Create a language manager, resolving aPlatformfrom the provided platform or legacy plugin instance.- Parameters:
platformOrPlugin- platform abstraction or Bukkit pluginconfigManager- config manager for loading language files
-
LanguageManager
Create a language manager bound to a specific platform.- Parameters:
platform- platform abstractionconfigManager- config manager for loading language files
-
-
Method Details
-
init
Initialise language manager and load default language (plus fallback if different).- Parameters:
defaultLanguage- language code to load first
-
loadLanguage
Load a language file into memory.- Parameters:
languageCode- language code to load- Returns:
- true if successfully loaded
-
setLanguage
Switch the current language for the manager.- Parameters:
languageCode- language code to set- Returns:
- true if language is now active
-
putCustomMessage
Add or update a custom message for a specific language (or current language when null). Saves the language file immediately.- Parameters:
languageCode- target language or null for currentkey- message keyvalue- message text (null removes the key)
-
registerTranslations
Register bundled plugin translations for multiple languages. Registered values are merged into already-loaded languages immediately and applied automatically to any language loaded later. Existing custom message values are preserved to avoid overwriting user overrides from disk.- Parameters:
translationsByLanguage- language -> (message key -> message text)
-
registerTranslations
Register bundled plugin translations for a single language. Registered values are merged into already-loaded languages immediately and applied automatically to any language loaded later. Existing custom message values are preserved to avoid overwriting user overrides from disk.- Parameters:
languageCode- language code to attach translations totranslations- message key -> message text
-
registerBundledTranslations
Loads every/lang/<namespace>/<code>.jsonfile the classpath exposes and registers them as bundled translations for this language manager. Plugins use this to ship default translations alongside their jar without each plugin re-implementing resource loading.Existing custom (user-edited) values on disk are preserved. Files are scanned via
BundledTranslations.availableNamespacedCodes(String).- Parameters:
namespace- plugin namespace (e.g."leavepulse")- Returns:
- number of language codes that contributed at least one key
-
setFallbackLanguage
Set fallback language used when a key is missing in the current language.- Parameters:
languageCode- fallback language code
-
getAvailableLanguages
-
getLanguageInfos
Get metadata for every available language.- Returns:
- metadata for each available language
-
getMessage
-
getMessageFor
-
getMessageIn
-
hasMessage
- Parameters:
key- message key- Returns:
- true if the current language (or fallback chain) has this key
-
hasMessageIn
-
setPlayerLanguage
-
setPlayerLanguage
-
setPlayerLanguage
-
clearPlayerLanguage
Remove stored language preference for a player.- Parameters:
playerId- player UUID
-
setAutoDetectedPlayerLanguage
Assign an auto-detected language for a player based on client locale data.Auto-detected languages are used only when no explicit player language override exists.
- Parameters:
playerId- player UUIDlanguageCode- locale tag or language code to resolve- Returns:
- true if a supported language was stored or cleared
-
setAutoDetectedPlayerLanguage
-
clearAutoDetectedPlayerLanguage
Remove stored auto-detected language for a player.- Parameters:
playerId- player UUID
-
clearAutoDetectedPlayerLanguage
Remove stored auto-detected language for an arbitrary player object.- Parameters:
player- player object
-
clearPlayerLanguage
Remove stored language preference for an arbitrary player object.- Parameters:
player- player object
-
getPlayerLanguage
-
getPlayerLanguage
-
getPlayerLanguages
-
getAutoDetectedPlayerLanguages
-
resolveSupportedLanguageCode
-
bindClientLocaleSync
Binds automatic player locale synchronization to the manager platform.- Returns:
- subscription that removes the registered listeners
-
bindClientLocaleSync
Binds automatic player locale synchronization to the provided platform.- Parameters:
targetPlatform- platform to subscribe to- Returns:
- subscription that removes the registered listeners
-
reload
public void reload()Reload all loaded languages from disk. -
saveCustomMessages
-
addMagicUtilsMessages
public void addMagicUtilsMessages()Persist currently loaded MagicUtils messages (ensures defaults exist). -
loadLanguageAsync
Load a language asynchronously to avoid blocking the main thread.- Parameters:
languageCode- language code to load- Returns:
- future that completes with true if loaded successfully
-
loadLanguageSmart
Load a language and return a future that completes when loading finishes.- Parameters:
languageCode- language code to load- Returns:
- future that completes with true if loaded successfully
-
setLanguageAsync
Switch active language asynchronously.- Parameters:
languageCode- language code- Returns:
- future that completes with true if active language is set
-
setLanguageSmart
Switch active language, auto-switching to async when on sensitive threads.- Parameters:
languageCode- language code- Returns:
- future that completes with true if active language is set
-
reloadAsync
Reload all loaded languages asynchronously.- Returns:
- future that completes after reload
-
reloadSmart
Reload all loaded languages, auto-switching to async on sensitive threads.- Returns:
- future that completes after reload
-