Localization System

Time on project: 2 years (fall 2021 – spring 2023)
Engine: Unity3D
Language: C#
Published in:Gerda: A Flame in Winter“, “Liva’s Story

Main Contributions:

  • Designed and developed the core package + UI.
  • Implemented importing/exporting to .xlsx and .json.
  • Implemented tracking of changes and diff functionality.
  • Implemented automatic status progression according to our localization pipeline.
  • Worked directly with our writers, localizers and publisher to support and add requested features.

Functionality:

Thew localization system was developed to address a number of desires.

  1. We wanted the project to have authority of the term data. Previously we had our localization data stored in a google spreadsheet, which is not convenient for change tracking.
  2. We wanted the location of the data to be flexible. To this end we stored the term data on individual scriptable objects as opposed to larger tables. This means it was easier to pack terms in appropriate bundles without any issues.
  3. We wanted to minimize merge conflicts even with multiple writers working in the same scene. This was achieved by having each term in it’s own individual asset.
  4. We wanted to customize production statuses. We ended up having one set of statuses for the main term and another set for translated languages. Having the flexibility to define our own localization pipeline was invaluable.
  5. We wanted to control term production statuses. For example when a writer would submit a term for review, the term status would be locked and any attempt to change it would prompt a warning popup.
  6. We wanted a strong integration into our dialogue system. This allowed us to color code terms that went over length limit and control term status directly from the dialogue system. We could also do stuff like color code terms based on status, ie. yellow was sent to review, green has been approved and shouldn’t be changed, etc.
  7. We wanted to be able to manage the terms and importing/exporting directly from the engine. To this end I developed an interface mimicking a spreadsheet. From here terms could be collected for importing/exporting as well as resolving merge issues when importing data from localizers.

The system was used in both Gerda and the DLC, The Current, The Long Night and Njord’s Embrace.