Resolve "add spanish mode" (#75)
Closes #75 (closed)
Behavior
GIVEN a working signalboost number
- WHEN a new receiver joins with the message "HOLA"
- THEN the receiver will receive a welcome message in spanish
- AND THEN all subsequent messages will be sent to them in spanish
GIVEN an existing member alice on 'foo' whose language is set to "EN" (english)
- WHEN alice sends a message that says "ESPANOL", "ESPAÑOL", or "SPANISH"
- THEN alice will receive a confirmation response in spanish
- AND THEN all further command responses to alice will be in spanish
Implementation
parse commands from incoming messages in both EN & ES:
- modify
parseCommand
to look for matches of all command variants in all languages, then pick the one that matched- NOTE: this requires no regex collisions between commands in different languages (currently there is a non-problematic collision on the cognate INFO)
- return language along with executable (for now) to aid in detecting language preference from command (if so desired in future)
- side-effect: modify responses command logic:
- use RESPONSES_ON/RESPONSES_OFF not TOGGLE_RESPONSES {payload}
- eliminates need for redundant parse step for assess whether payload is valid or not
- also makes translation strings map structure simpler
detect language preferences from a JOIN and pass as arg to addSubscriber
repo method:
- if HOLA, detect spanish, if HELLO detect Englis
- include
language
as arg toaddSubscriber
, which setslanguage
field when creatingsubscription
resource
add SET_LANGUAGE
command:
- matches on the name of a language (no matter what language it is given in)
- modifies the the language of a given member's
subscription
oradministration
record (depending on their role)
update EN -> ES translations:
- reflect revisions accumulated in recent MRs
- flatten
strings/messages
JSON structure so that all top-level keys incommandResponses
match command names - add regression test to make sure translations are provided in ES for all EN strings
Side-effect: relax regexes in cli/boost-commands/create-channel
to support non-north-american country codes!