Some great suggestions here guys - I had forgotten there were conditionals in expandMacros… that is the better solution.
Although I do kind of think that something on OrderedCollection like: chooseBasedOn: count ^self at: ((count max: 1) min: self size) Would be a nice general solution for other things (I’m kind of suprised there isn’t something like that there) > On 20 Feb 2019, at 21:21, Esteban Maringolo <emaring...@gmail.com> wrote: > > Why not use the condition macro so you have a single string literal, that in > the future could be used for translation? > > E.g. > | occurences | > occurences := 3. > 'There <1?is:are> <2p> <1?occurrence:ocurrences> of <3p>' expandMacrosWith: > occurences = 1 with: 3 with: 'Foo' > > > Esteban A. Maringolo > > > El mié., 20 feb. 2019 a las 18:08, Tim Mackinnon (<tim@testit.works>) > escribió: > I was browsing some of the Pharo issues (always worth doing) - and noticed an > interesting one about Test results reporting and pluralisation > (https://github.com/pharo-project/pharo/issues/2578 > <https://github.com/pharo-project/pharo/issues/2578>) > > In it, I hadn't noticed String>>asPluralBasedOn: before (and judging from > many messages in the image, many others hadn't either). > > I'm fixing something similar for a refactoring bug and can use this technique > there (although from memory, it comes with a health warning as if ever we > want to internalise the messages in Pharo, this will need a different > approach). However we are probably a distance from doing that - so cleaning > up what we have is a good start. > > Anyway I was curious if there is something to help with messages like: > > ‘There is 1 occurrence of {1}’ vs ‘There are many occurrences of {1}’, which > I’d like to write something like: > > ‘There ‘, (‘is 1 ’, ‘are many ’) pick: result size, ‘occurrence’ > asPluralBasedOn: result size, ‘ ‘, result printString. > > > Tim > >