Skip to content

Conversation

@Sidpatchy
Copy link
Owner

@Sidpatchy Sidpatchy commented Dec 20, 2024

Tracker for progress on the implementation of multi-language support.

  • Official English language file
  • Language file template
  • Language manager
    • Context manager
    • Placeholder implementation
  • Update everything to utilize the language manager
  • Verify and complete API implementation
  • Update /config to support users specifying their preferred language
  • Document all the things

Sidpatchy and others added 18 commits August 22, 2024 19:41
Finally getting around to implementing this. If I don't implement it before my planned feature set for v3.5, it will never happen as the complexity of implementing this will go through the roof in the update as planned.

Putting this in a separate branch so that when I have downtime at work, I can work on the slow and painful process of migrating everything to this system.
Fix some issues caused due to my IDE being configured to use Java 21.

Switch the commands.yml loader to the new system introduced in Robin @ v2.1.0

FINALLY get rid of the godawful commandList

Alphabetize commands.yml

Begin progress on writing lang_en-US.yml
I prefer the idea of this structure, I just don't like the implementation of this structure.

Also considered doing one giga-class (technical term :)), but that would've been much less readable than whatever in the fuck this is.

Probably would've been easier to understand the intent of though... I will need to write some really good javadoc if I stick with this.
This is the first vaguely working implementation of the language system.

/8ball is the only implemented command here.

Nothing else is tested at this point because it's not been worked on.
this is rather broken at the moment
@Sidpatchy Sidpatchy self-assigned this Mar 13, 2025
Incomplete feature added in 0d1b24d.

Would be nice to have faster subsequent runs of the /quote command in a given channel but I don't want to be storing messages for any longer than absolutely needed. ClaireBot is not spyware.
Almost entirely courtesy of GPT-5. This wouldn't be finished anytime soon without LLM assistance. The hard part was done by hand, the machine can do the chores.

Now the only remaining work (that immediately comes to mind) is the MessageComponents embeds. It looks like I still need to add most (or all) of those fields to the language file so that's gonna wait.
@Sidpatchy
Copy link
Owner Author

ce4acc0 is completely untested

@Sidpatchy
Copy link
Owner Author

Sidpatchy commented Aug 26, 2025

Since machine translation has come so far, I'm slightly curious how well something like Kagi Translate could handle translations.

It's obviously nothing that would replace real human translations, but the size of the language file is daunting.

I'm not strictly opposed to the idea, but I'm not multilingual, so I can't really evaluate such a thing. Before merging it might be worth adding some documentation/comments clarifying this stance and also poking at a few multi-lingual people I know for opinions on the matter.

Copy link
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Add javadoc on what this is for. Best to avoid having to go analyze source-code later on.

Copy link
Owner Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For readability purposes it may be best to move all the localization strings to a block at the beginning of this file. At the same time however, I don't expect this to be touched anytime soon.

@Sidpatchy
Copy link
Owner Author

v3.4.0-alpha.4 is fully broken when the database fails. Need to find the hard dependency and remove/fix it.

@Sidpatchy
Copy link
Owner Author

Sidpatchy commented Oct 15, 2025

Command Status

✅ Fully Working

  • 8ball
  • /avatar
  • /info

⚠️ Partially Working / Minor Issues

  • /help - need to create localized command files, but working otherwise
  • /leaderboard - works just as poorly as before
  • /level - works just as poorly as before
  • /quote - workingish - fails silently for users with no messages
  • /server - footer language string broken, everything else works
  • /config:
    • user:
      • colour - placeholder for displaying hex value needs to be fixed to not show java.awt.Color[r=156,g=39,b=176]
    • server:
      • enforce server language

❌ Broken / Major Issues

  • /poll - completely broken
  • /request - modal submits successfully, fails to post request. /request without modal does the same
  • /user - fails silently with no errors logged
  • /santa:
    • re-randomize broken
    • send sample broken
    • add rules broken
    • add theme broken
    • send messages broken
  • config:
    • user:
      • language
    • server:
      • requests channel - changing to channel command was executed in
      • moderator messages channel - changing to channel command was executed in

Now returns hexadecimal value as intended.
- Separates concerns in embed construction.
- Adds methods for generating embeds from existing pairings.
- Implements the ability to randomize pairings by editing the existing embed.
- Fixes an issue where the server icon was not properly being set as a footer.
- Handles cases where the user is null for language processing.
Addresses potential null pointer exceptions by ensuring context data is properly handled during placeholder replacement.

Improves code readability by using `isEmpty()` instead of `length() == 0` for checking empty string builders.

Corrects the translation key for the requests channel mention tag.

Fixes number emoji reactions for voting options.

Improves poll ID parsing and reaction moderation.
This commit REQUIRES ClaireData v1.1.0 due to making use of the locale field in the Guilds table
@Sidpatchy
Copy link
Owner Author

As of most recent commit, we now require ClaireData v1.1.0, which is tragic since there hasn't been a need to update in the >2 years since 698aaaad9790f86e85f7e3aeb9b47b41e5ee85b9

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants