Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add a new localisation handling layer PG.StarWarsGame.Localisation #316

Open
7 tasks
gruenwaldlk opened this issue Aug 1, 2023 · 4 comments · May be fixed by #413
Open
7 tasks

Add a new localisation handling layer PG.StarWarsGame.Localisation #316

gruenwaldlk opened this issue Aug 1, 2023 · 4 comments · May be fixed by #413
Assignees
Labels
enhancement New feature or request

Comments

@gruenwaldlk
Copy link
Member

The new layer PG.StarWarsGame.Localisation should accomplish the following goals:

  • The layer enhances the raw DAT in-memory-representation with additional metadata.
  • The layer allows for validation and handling of all official languages the engine can handle.
  • The layer should still be open to be extended to handle languages the game engine does not support. Additional languages are up to other developers to support.
  • The layer provides means to load and store common community formats, e.g. CSV as used by @ThrawnsRevenge or XML as used by @gruenwaldlk 's text editor in addition to loading from/storing to DAT files.
  • The format support has to be extensible to accommodate other formats (TSV, ...) but only the most common formats will be provided for now.
  • The layer provides at least an interface definition for a localisation repository that can be used for advanced handling of translations.
  • The layer should still allow access to the "bare-metal" representation of the DAT file, but discourage its use.
@AnakinRaW
Copy link
Member

AnakinRaW commented Aug 12, 2023

For me the only requirement, not sure if that's already covered or not in the list above, is that it shall be possible to use custom serialization formats.

Also here is a grammar file which i think can be used to represent text files.

TextFile := LANGUAGE_SPEC (NEW_LINE TEXT_ENTRY)*
LANGUAGE_SPEC := 'LANGUAGE' '=' LANG_CODE
LANG_CODE := "[A-Z]+"
TEXT_ENTRY := TEXT_KEY ' ' TEXT_VALUE
TEXT_KEY := [A-Z]+
TEXT_VALUE := [Unicode Character]*
NEW_LINE: '\r\n'

@gruenwaldlk
Copy link
Member Author

gruenwaldlk commented Aug 12, 2023

For me the only requirement, not sure if that's already covered or not in the list above, is that it shall be possible to use custom serialization formats.

That should be covered by The format support has to be extensible to accommodate other formats (TSV, ...)

I'm thinking of exposing an interface for a serializer and an format descriptor which is used by the layer and can be implemented by applications using the layer as well.
As long as those extensions are then registered as services, the factory should be able to pick them up and read/write the format.

@AnakinRaW
Copy link
Member

fair enough. shall these formats get their own package?

@gruenwaldlk
Copy link
Member Author

I planned on bundling at least a CSV type and maybe the XML format.
It would be more in line with .NET's approach to have a setup like My.Library.Abstractions and an additional implementation package which is great in theory, but I honestly don't exactly see there being many formats being added by anyone who not also has access to just directly bundling them.

gruenwaldlk added a commit that referenced this issue Aug 12, 2023
gruenwaldlk added a commit that referenced this issue Aug 12, 2023
gruenwaldlk added a commit that referenced this issue Aug 12, 2023
gruenwaldlk added a commit that referenced this issue Aug 12, 2023
gruenwaldlk added a commit that referenced this issue Aug 12, 2023
gruenwaldlk added a commit that referenced this issue Aug 12, 2023
gruenwaldlk added a commit that referenced this issue Aug 12, 2023
gruenwaldlk added a commit that referenced this issue Aug 13, 2023
gruenwaldlk added a commit that referenced this issue Aug 15, 2023
gruenwaldlk added a commit that referenced this issue Aug 15, 2023
gruenwaldlk added a commit that referenced this issue Aug 15, 2023
gruenwaldlk added a commit that referenced this issue Aug 15, 2023
gruenwaldlk added a commit that referenced this issue Aug 15, 2023
gruenwaldlk added a commit that referenced this issue Aug 15, 2023
gruenwaldlk added a commit that referenced this issue Aug 15, 2023
gruenwaldlk added a commit that referenced this issue Aug 15, 2023
gruenwaldlk added a commit that referenced this issue Aug 16, 2023
gruenwaldlk added a commit that referenced this issue Aug 16, 2023
gruenwaldlk added a commit that referenced this issue Aug 16, 2023
gruenwaldlk added a commit that referenced this issue Aug 16, 2023
gruenwaldlk added a commit that referenced this issue Aug 16, 2023
gruenwaldlk added a commit that referenced this issue Aug 16, 2023
gruenwaldlk added a commit that referenced this issue Aug 16, 2023
gruenwaldlk added a commit that referenced this issue Aug 16, 2023
gruenwaldlk added a commit that referenced this issue Sep 5, 2023
gruenwaldlk added a commit that referenced this issue Sep 5, 2023
gruenwaldlk added a commit that referenced this issue Sep 5, 2023
gruenwaldlk added a commit that referenced this issue Sep 5, 2023
gruenwaldlk added a commit that referenced this issue Sep 5, 2023
gruenwaldlk added a commit that referenced this issue Sep 5, 2023
gruenwaldlk added a commit that referenced this issue Sep 5, 2023
gruenwaldlk added a commit that referenced this issue Sep 5, 2023
gruenwaldlk added a commit that referenced this issue Oct 12, 2023
gruenwaldlk added a commit that referenced this issue Oct 12, 2023
gruenwaldlk added a commit that referenced this issue Oct 12, 2023
gruenwaldlk added a commit that referenced this issue Oct 12, 2023
gruenwaldlk added a commit that referenced this issue Oct 12, 2023
gruenwaldlk added a commit that referenced this issue Oct 12, 2023
gruenwaldlk added a commit that referenced this issue Oct 12, 2023
gruenwaldlk added a commit that referenced this issue Oct 12, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment