feat: Language Specific Keyboard Icons
- Dominant language
- Pascal
- Stars
- 534
- Forks
- 143
- Avg merge
- 2d 10h
- Merged PRs (30d)
- 113
Description
### Is your feature request related to a problem? Please describe.
A keyboard that supports multiple languages has only a single icon to associate with the keyboard. This may not be the most optimal experience for the user to locate the keyboard from a list of available keyboards. This request is to support multiple, language-tagged, icons that can be packaged with the keyboard. The keyman installer will apply the appropriate icon (for the taskbar and other contexts) that is associated with the language that the user selects at installation time.
### Describe the solution you'd like
Somehow, the keyman language supports a mechanism to specify a list of icons associated with a language. Three approaches are reviewed below.
1. The `BITMAP` variable is updated to read a list of space-delimited icon files. The filenames must end with the language tag before the `.ico`. The first icon in the list, with no language tag, is a default that can be used in language-neutral contexts such as packaging. An advantage of this approach is that no change is made to the Keyman language keywords.
```
store(&BITMAP) 'gff_foo.ico gff_foo_am.ico gff_foo_byn.ico gff_foo_ti_ER.ico gff_foo_ti_ET.ico'
```
2. The language tag is appended to the `BITMAP` variable. This approach allows for more flexibility in the icon file names, but at the cost of polluting the Keyman language more:
```
store(&BITMAP_am) 'gff_foo_am.ico'
store(&BITMAP_byn) 'gff_foo_blin.ico'
store(&BITMAP_ti_ER 'gff_foo_ti_ER.ico'
store(&BITMAP_ti_ET) 'gff_foo_ti_ET.ico'
: : :
```
3. The `BITMAPS` keyword is introduced and is assigned to a JSON block of language tags to icon mappings:
```
store(&BITMAPS) '{
'am' : 'gff_foo_am.ico',
'byn' : 'gff_foo_blin.ico',
'ti_ER' : 'gff_foo_ti_ER.ico',
'ti_ET' : 'gff_foo_ti_ET.ico'
}'
```
### Describe alternatives you've considered
_No response_
### Related issues
_No response_
### Keyman apps
- [x] Keyman for Android
- [x] Keyman for iPhone and iPad
- [x] Keyman for Linux
- [x] Keyman for macOS
- [x] Keyman for Windows
- [ ] Keyman Developer
- [x] KeymanWeb
- [ ] Other - give details at bottom of form
### Keyman version
17.0.325
### Operating system
Any
### Device
Any
### Target application
N/A
### Browser
N/A
### Keyboard name
ANy
### Keyboard version
Any
### Language name
Any
### Additional context
To clarify the multilingual scenario, the screenshot below shows the keyman installer with a menu of languages to select from at installation time. A language specific-icon would help maintain the association between the language and keyboard. A nice touch woudl be to present the language-tagged icon in the dropdown menu as well.
Contributor guide
Assessment
This issue has not been assessed yet.