Aller au contenu

Localization — Changelog

Ce contenu n’est pas encore disponible dans votre langue.

All notable changes to this pack are recorded here.

The format follows Keep a Changelog and the pack follows Semantic Versioning.

The version below must always match the one declared in Runtime/AssemblyInfo.cs — that is the version the FOS Hub shows, and the one the Hub compares against the installed Core.


Nothing yet.


First release. Requires FOS Essentials Core 1.0.0.

Components

  • FOSLocaleManager — one per world. Holds the languages, the translation table and the current language. The first language is the pivot every other one falls back to.
  • FOSLocalizedText — binds a key to a TMP_Text or a legacy Text.
  • FOSLocalizedImage — swaps a sprite per language.
  • FOSLanguageButton — switches the world to one language, with an optional selected/unselected highlight.

Authoring

  • Translation Table window: keys and languages edited in a real table instead of two arrays that have to be kept aligned by hand.
  • CSV round-trip — export for a translator, merge the file back in. A translator never has to open Unity.
  • Automatic OnClick wiring for a language button.
  • Editor interface translated into English, French, Spanish and German.

Persistence

  • The player’s choice is remembered between visits through VRChat PlayerData, under a configurable key so it cannot collide with another system in the world.
  • The stored choice is read on OnPlayerRestored: PlayerData is not readable before that event, and reading it earlier silently returns nothing.
  • Everything here is local: no synced variable, no network traffic, no ownership. Two players standing next to each other have no reason to read the same language, and synchronising the choice would mean one of them loses it every time the other clicks.
  • The key and value arrays are hidden from the inspector on purpose. They are an implementation detail of the table window, and editing them directly is how they end up misaligned.
  • The reasoning behind each of these choices is in README.md.