03:33:38 Experimental (bcrawl) branch on underhound.eu updated to: 0.23-a0-5261-gd9800d219b 09:12:47 <09g​ammafunk> restarted, although you'll kind of need to keep monitoring it for me as napkin is frequently restarting CDO after upgrades. Not sure when they'll all be completed 09:13:10 <09g​ammafunk> maybe I should just move those bots also to dev.dcss.io 09:13:43 <09g​ammafunk> I only put them on cdo with the idea that other devs might admin them however that doesn't seem to realistically happen 10:07:49 hi all - solo dev here, no team, no mentor, just me and my laptop. finally shipped something I'm proud of: a free flat icon generator (icongenerator-lyart.vercel.app). curious what y'all think - be honest :) 10:09:11 ah shoot, something urgent came up - gotta run. nice talking! 👋 10:11:44 (Cross-channel spam for Discord-side folks that are confused) 10:46:00 <08n​icolae> i tried it a little this morning, i might be doing something wrong here, but it's the same issue: if i don't mark those tiles with no_tide, the shoalinator will rewrite the fheights, if i do mark those tiles with no_tide, they don't get tides at all and the fheight is moot. i think that if it is desirable to let vault makers specify their own tidal patterns, then there should be another tag like no_redo_height or something that keeps 10:46:00 the shoals generator from messing with them but while still letting it be affected by tides 13:02:36 <12g​e0ff> Also, re: irc bridge bots and logging bots. On 6th August, there were a couple of irc messages that weren't bridged to Discord. Reposting them, just so they are not lost: 13:02:48 <12g​e0ff> > 08:51:45 [bug? 0.34 stable] protean talisman can be identified if an enemy is nearby and cancelling transformation, or if you're in flux form ("You need to leave your temporary form first."). Shp 6 still required. > 08:52:09 intended behavior as I infer it is it is only identified after full transformation 13:02:58 <12g​e0ff> and 13:03:02 <12g​e0ff> > 21:27:53 Hi devs, for some time I've been working on a fork called Alphabet Soup, which implements full internationalisation. That project is almost completed. I'd like to start getting internationalisation into mainstream Crawl trunk. What's the best way to go about it? 13:04:22 <09g​ammafunk> oh dang 13:05:00 <09g​ammafunk> well hopefully MrDizzy shows up again, although I'm not sure if that was the AI-based translation code project 13:06:17 <08o​____0> https://github.com/powerbf/alphabet-soup 13:08:16 <08o​____0> It appears to be based on 0.27 so there would be some extra conflicts.... 13:11:22 <08o​____0> Making everything translatable is pretty cool though 13:12:03 <12g​e0ff> Looking at the alphabet soup, I vaguely remember reading about this German translation ages ago, long before 🤖s made programming obsolete ™ . 13:12:09 <08o​____0> As difficult as that is with how crawl builds strings for the message log 😭 13:18:11 didn't i18n kinda hit a brick wall with polish numbers some time back? 13:18:11 <11O​dds> This looks like a different one than the massive AI-powered PR a while ago 13:48:30 <08o​____0> wrt the protean talisman thing, I don't think it's an issue as long as shapeshifting 6 is required? In trunk you can even put a warning inscription on the talisman so when you attempt to wear it, the talisman is identified and you can simply decline wearing it 13:49:03 <08o​____0> I don't really see the advantage in this 13:50:35 <08o​____0> Like it's always been an out-of-combat thing anyway 13:55:39 <11O​dds> I think it would probably be slightly better if it didn't identify just because obscure tech like that inscriptions is a bad thing. 13:56:11 <11O​dds> But yeah it's not a big deal at all, if you care enough to bother inscribing it you could just make sure you are very safe before transforming 14:52:03 <09h​ellmonk> Let the player identify scroll protean talismans 16:02:20 -!- MakMorn_ is now known as MakMorn 16:11:17 Hi again, I was offline when you replied. 16:11:46 No. Alphabet Soup is not AI translation. 16:12:28 Re:Conflicts. Yeah. It's based on 0.27, but I was planning to do a direct merge. It would be massive anyway. 16:12:37 *wasn't 16:14:37 My plan was to do it in small chunks, and implement it somewhat differently based on lessons learned along the way. 16:21:18 <09g​ammafunk> MrDizzy: That's very cool. I'm not really qualified to talk about the technical aspects of translation as I have no experience. Would it be possible to make a writeup on any eventual PR that summarizes the basics of your approach and what issues remain? 16:22:18 <09g​ammafunk> MrDizzy: A short technical summary would be helpful, as opposed to having to read through a long commit history. Things like what new types of translation files we'd have to work with (there seemed to be some of this looking at some random commits) 16:22:56 out of curiosity, is it gettext or fluent or something-else based? I've personally come around on fluent after using it in a large project 16:26:36 Yeah. I can do a write up. 16:27:18 It's based on the existing dbm functionality in Crawl. 16:27:32 Initially, I was using gettext, but I didn't like it. 16:27:46 Oo neat. That probably ends up being a bit like fluent then 16:28:34 For one thing, you have to compile your text files into gettext files very time you change something. 16:29:09 The dbm module reads the text files directly and knows when they change. 16:29:38 By dbm module, I mean database.cc 16:29:48 plus fuzzy matching for translation invalidation can be pretty rough 16:31:08 what convinced me of the evils (not actually) of gettext: https://github.com/projectfluent/fluent/wiki/Fluent-vs-gettext 16:33:17 Interesting.... 16:33:52 I did go down the route of using the existing English strings as the keys (which the author of that post didn't like). 16:34:00 ... except Fluent might not have any C++ bindings somehow? Odd 16:34:14 Yeah I think that ends up having issues even though it's very tempting 16:34:28 Though I think gettext has very clearly shown that it can work out okay 16:34:46 I thought about doing it with ids intead, but that would be a lots of code changes. 16:34:51 True 16:35:17 If I was implementing an app from scratch, I would use ids. 16:35:37 But with an existing code base that has thousands of strings.... 16:36:00 Yeah, plus there's the extra work of making the IDs, and we all know how programmers are about naming things :^) 16:36:32 I got around the issue of clashings strings by allowing an optional context to be provided for the translation. 16:36:59 For example, "fire" in the context of a command, is different than "fire" as in flames. 16:37:47 I also used the context mechanism to handle grammatical gender and grammatical case. 16:38:43 German, which was my main test language, has both. 16:39:20 How'd you do plurality? 16:43:11 There is the capability to generate them using regexps, but for German, I defined them manually because there's no standard way to form plurals. 16:43:12 I also had a mechanism to handle languages like Russian that have different plurals based on number. 16:43:58 But that latter mechanism was pretty clunky, so I'd probably do it a different way this time. 16:44:38 hm, yeah, I'm not sure how well that'd work for languages with irregular declensions 16:45:38 German changes some plurals in dative case, which I handled with the context mechanism. 16:45:55 and also keep in mind some languages have even dual (and even trial) numbers 16:46:23 Yeah. That's what I meant by "different plurals based on number". 16:46:40 ahh 16:46:43 That's the thing that was clunky 16:52:35 Just to explain grammatical case by way of an example... In German, "the ork" is "der Ork" (nominative case) if he's hitting you, but "den Ork" (accusative case) if you're hitting him. 16:53:20 So, you can't just have one translation for "the orc", which is where the context mechanism comes in. 20:01:36 <07w​izardike> It seems to be working for me with the exception of deep water that I still need to fix. Were you using an encompass vault? they don't get heightmaps 20:01:36 <07w​izardike> https://cdn.discordapp.com/attachments/747522859361894521/1535483086601457734/Screenshot_2026-08-08_145511.png?ex=6a77ed8f&is=6a769c0f&hm=8b574802014d0b7dc46727d109565eb22ce649bed1af33dcf16444f4c52e34cf& 20:01:37 <07w​izardike> https://cdn.discordapp.com/attachments/747522859361894521/1535483086878548039/Screenshot_2026-08-08_145522.png?ex=6a77ed8f&is=6a769c0f&hm=d857528bcc91fab64be3dae24690aeb90c3ee20e57b1384851b649b140963f63& 20:01:37 <07w​izardike> https://cdn.discordapp.com/attachments/747522859361894521/1535483087163629699/Screenshot_2026-08-08_145526.png?ex=6a77ed8f&is=6a769c0f&hm=1b1777bdff96e730c99e72f67ac3d49110ffb92cd8c3c3ecbb3f61b0d6163eaf& 20:03:19 <08n​icolae> maybe i need to try again 20:03:26 <08n​icolae> but it wasn't an encompass 20:08:53 <07w​izardike> It's worth noting that tides retreating often leaves water behind if you have an area with all the same height (the code that causes this looks intentional), so it might not have the expected result even with the right heights 20:42:09 <08n​icolae> ...hunh! 22:30:03 <09g​ammafunk> at least you found some barding 23:45:29 Monster database of master branch on crawl.develz.org updated to: 0.35-a0-840-g1b83f8deab