User Stories:
Additional Requirements
- A .dat and a .xml file SHOULD be exchangeable. This means at any given point the API should allow me to either use one or many .dats or one .xml file.
- The
translationManifest.xml MUST not use hardcoded languages in its implementation. This issue was already addressed in the original implementation.
Petroglyph provided all languages the game engine supports. The implementation will expose a ILanguageDefinition that will be used throughout the implementation and can be expanded upon, but all official *LanguageDefinitions will be provided as sealed classes.
Architectural Details
Localization Service
The localization service is an API that contains a meta model for multiple localizations (e.g.Interface name: IGameLocalization. It MUST hold multiple localizations identified by the english culture name (however we MUST not hardcode the possible language names ([gruenwaldlu]: The possible languages will however be restricted to elements implementing the ILanguageDefinition)). Each language has a simple key-value data store for the actual translations. Data validity checks, TODO handling, etc. is exposed through this service.
Dat File Service
This is an IO API responsible for loading/storing .dat files. The data model which gets transformed from/to a .dat file comes from the Localization Service.
TranslationManifest File Service
This is an IO API responsible for loading/storing translation manifest .xml files. The data model which gets transformed from/to this .xml file comes from the Localization Service. This Service also acts as an concrete implementation of the TranslationManifest Specification.
TranslationManifest Specification
This is an interface only API which defines all data types necessary for a TranslationManifest.
Localization CLI
This is an CLI tool which allows to perform the above described user stories.
User Stories:
translationManifest.xmlfile so I have access to it's higher level data (Key - Value - Language)translationManifest.xmlfile from one or many .dat files so i have all my localization in one VCS compatible file.translationManifest.xmlfile to multiple .dat files so the game can use them.Additional Requirements
translationManifest.xmlMUST not use hardcoded languages in its implementation. This issue was already addressed in the original implementation.Petroglyph provided all languages the game engine supports. The implementation will expose a
ILanguageDefinitionthat will be used throughout the implementation and can be expanded upon, but all official*LanguageDefinitions will be provided as sealed classes.Architectural Details
Localization Service
The localization service is an API that contains a meta model for multiple localizations (e.g.Interface name:
IGameLocalization. It MUST hold multiple localizations identified by the english culture name (however we MUST not hardcode the possible language names ([gruenwaldlu]: The possible languages will however be restricted to elements implementing theILanguageDefinition)). Each language has a simple key-value data store for the actual translations. Data validity checks, TODO handling, etc. is exposed through this service.Dat File Service
This is an IO API responsible for loading/storing .dat files. The data model which gets transformed from/to a .dat file comes from the
Localization Service.TranslationManifest File Service
This is an IO API responsible for loading/storing translation manifest .xml files. The data model which gets transformed from/to this .xml file comes from the
Localization Service. This Service also acts as an concrete implementation of theTranslationManifest Specification.TranslationManifest Specification
This is an interface only API which defines all data types necessary for a TranslationManifest.
Localization CLI
This is an CLI tool which allows to perform the above described user stories.