Multilingual Default Language Media displays for all languages

1. What is the issue? Please be detailed.
In a multilingual form, I would like to have media (both audio and/or images) be displayed for a specific language, but not for other language(s). Currently when I put audio/images in the default language it will display them for all languages. If I try to put them only in a non default language column, the app crashes when changing to the non default language in ODK Collect.

Also mentioned briefly here:

2. What steps can we take to reproduce this issue?

  1. Create a multilingual form with audio or images in the default language column keeping the other non default language columns blank. The media will show up in the other non default language(s).
  2. Create a multilingual form with audio or images in the non-default language column only. ODK Collect will crash when switching to the non default language.

3. What have you tried to fix the issue?
As I mention here, my current workaround is to just deal with having the default language audio and images show up for all languages.

If you don't want the images to show up for a language, a workaround might be to create a 1 pixel by 1 pixel image (or just a small completely transparent PNG) and use it for all the fields where you don't want an image to show up?

1 Like

This would be a potential workaround, but doesn't look like its possible. I have added audio .mp3 files for the non default language and even when I have that setup correctly with a dedicated column for audio in non default languages, ODK Collect still plays only the default audio when changing between languages. The same happens for images. :person_shrugging:

Hey, @Tyler_Depke !

I have found a funny (but it works flawlessly) workaround for the same. :smile:

Logic:
The thing is - if we don't upload some media file for form attachment, then ODK Collect simply wont be able to display the same to the data collector.

Check / Test this here:
multilingual_images.xlsx (10.4 KB)
png_attachments.zip (52.2 KB)
(Don't upload any attachment for "." & publish the form :grin:)

Hope you find it helpful! :smile:

1 Like

This is what I get when trying out your form.


When I put the language to French, which is the non-default language, it skips from Note1 to Note3, skipping Note 2 which is the note that has the "." in the image::French (fr) Column.

I was looking over the form language documentation and I saw this just above this location:

"Blank cells in a language-specific column will be blank in the form when that language is active, even if the "default" column has a value."

This seems to be true for labels, but this is not happening for media. I guess what I'm asking is, could we make the behavior consistent for each type of media to line up with what the current behavior for labels?

Here is an example form with 3 audio files in different languages.
Multilingual_media_issues.xlsx (14.0 KB)
verify test media.zip (46.9 KB)

Hi @Tyler_Depke !

The test form I shared heavily relied on the simply trick (or a bug) in ODK Collect to function (the very reason why I called it funny), seems like it has been fixed in the recent version of ODK Collect. In case, you still wish to experience it's functioning, try using the ODK Collect version that was majorly being used in October 2024.. (v2024.2.4)!

Demo:

odk_demo1

Great day ahead! :smile:

The original form you uploaded has the default language set to English, but the video above looks like the default language is set to French. Can you double check what that forms default language is? I'm not getting the behavior shown in your video. I'm running ODK Collect v2024.3.3 and ODK Central v2024.3.0-1.

@MinimalPotato , what app did you use to make the screen capture video? Did you export it as a GIF? I'll try to make a screen capture and post it.

Hey @Tyler_Depke !
.

  • Great observation! The form I uploaded indeed has English as the default language. However, here's something interesting to note: if a data collector switches the form's language once (say, from English to French), the next time they start filling a new form, it will open in French - even if English is the default. That’s why you see French as the first language in the video - I ended the last form with French selected as the main language.
  • Hmm, I’m not entirely sure if ODK Collect version 2024.3.3 supports this feature. The version I used was 2024.2.4!
  • To run ODK Collect on my Windows machine, I use Memu Play. You could also try WSA, but I prefer keeping a clear separation between the host and virtual systems, so Memu Play works best for me. For the video, I used OBS to record it, then converted it into a lightweight GIF (just 10-20 fps to reduce the file size significantly) before uploading it here as an image.

Good Day! :watermelon:

To add to @MinimalPotato, when I need to screen record, I either use the system screen recorder (Samsung Galaxy devices), or mirror my device using scrcpy and use MacOS screen recording (command+shift+5), then reprocess these with ffmpeg to desired container / compression / quality.

1 Like