Open Oblait opened 5 months ago
I'm not against localization support in the official build but it would require a few steps. I'm happy to look into some of these in the near future:
public class DialogBank
{
public string LanguageID;
public string LanguageLabel;
public string Font;
public Dictionary<string, DialogLine> Lines;
}
Thanks, Noel! Sounds great.
I'm not against localization support in the official build
Yeah, modding in language support would be relatively simple, but I'd rather localization of all things be more accessible tbh.
While we're on the subject - I know RTL is a pain, so we're happy to provide anything you need from bespoke fonts w/ licenses, feedback, or direct help with the code. This is mainly to avoid lagging behind once it's time to actually translate, as RTL languages often gets the short end of the stick in cases like these.
We've worked on games like Obra Dinn, Tunic, and most recently VVVVVV and provided implementation consultation & support next to the localizations - so we got RTL support down to a process at this point.
That should keep hair-pulling to a minimum I think. Feel free to ping/reach out anytime.
I think for RTL the biggest thing is making the sprite batcher text rendering be able to handle it (https://github.com/FosterFramework/Foster/blob/main/Framework/Graphics/Batcher.cs#L1607), and to also query the font for information on whether it is RTL (unless the character advance is just negative?)
Changing the xadvance for the characters to negative instead of positive, plus adjustable text alignment (I mean the left/center/right setting) could do the trick.
Even if you can't do that or don't think changing the code is possible to accomodate one language, please still give it a try (we just need access to the fonts and full text), then we can figure out a workaround just working with the Latin codebase and see what needs to be ironed out later.
I'm not against localization support in the official build but it would require a few steps. I'm happy to look into some of these in the near future:
- [ ] Dialog needs some a Dialog class, I imagine it would look something like:
- [ ] Needs to load dialog from folders, like how other assets are loaded
- [ ] When generating the Font for each language, it needs to know what charset to use (by querying the lines, probably?)
- [ ] Ideally don't generate the font unless the language is actually used, since it's slow.
- [ ] Some way to switch languages (either in-game or a just by editing the save... the in-game menu is getting kind of big though, so might need an actual options menu).
If you didn't make the game with internationalization in mind, I suggest this possible approach:
The basics for this are set up, and in theory should work for any LTR language. Further issues:
Cool, we'll get to it and we should have something cooked up by next week I reckon. I have some other minor suggestions for the loc process but @DreamPlusInfinity covered almost everything, so I'll leave those to after we're done.
Related to this, I noticed 2 minor issues where the Language wasn't getting loaded correctly from the save file, and made a PR for them here: https://github.com/ExOK/Celeste64/pull/73
Related to this, I noticed 2 minor issues where the Language wasn't getting loaded correctly from the save file, and made a PR for them here: #73
Thanks, merged that in!
Are they any plans to implement support for multiple languages/language selection?
My team would love to do an Arabic localization for this. The technical end of RTL shouldn't be a challenge as long as a Localization system is in place.