Hi Chris. We do this by first having a couple of filtering questions. The user has to select a taxa group ( plant, animal, or community) and then whether they want scientific or common names. Then, depending on the combination of answers, different species are offered in the drop down. I think what you want to do is this same scenario minus the plant/animal/community questions. Below is how we achieve our filtered drop-down lists. You could modify this process to fit your needs:
1) ${search_by} question - type: select_one search_by; name: search_by; populated with values in the choices tab: list_name = search_by; name = S, C; label = Scientific Name, Common Name
2) ${taxa_group} question - type: select_one taxa_group; name: taxa_group; populated with values in the choices tab: list_name = search_by; name = A, P, C; label = Animal, Plant, Community
2) ${scientific} question - type: select_one_external scientific; name: scientific; relevant: ${search_by}='scientific'; choice_filter: values=${taxa_group}
3) ${common} question - type: select_one_external common'; name: common; relevant: ${search_by}='common'; choice_filter: values=${taxa_group}
Then, in the external choices tab, we have the full scientific names list followed by the full common names list (so each species essentially is in there twice, once with the scientific name and once with the common name). In the first column, there is either scientific or common, the second column houses what you want to appear in the resulting database (in our case, this is an ID number associated with each species), in the third column, there is what you want to show in the list (the scientific or common name), and in the fourth column, we have A, P, or C limiting the drop-downs to only showing the scientific or common names for just animals, just plants, or just communities. I attached a screenshot of our external choices sheet as an example.
We also show the other name, which might be what you're actually getting at. To do this, we have an additional four questions: first we calculate the common name from the scientific name using a pulldata() and then we print a note of what that name is. The process is repeated for getting the scientific name from the common name. Here is that process:
1) ${scientific_name} question: type: calculate, name: scientific_name; calculation: pulldata('<csv_name>', '<scientific name column>', '<column to use to lookup return value>', ${<variable to use to match the lookup value to - in our case this is the ID number associated with the species>})
2) no name question: type: note, name: (blank), label: Scientific Name; calculation: ${scientific_name}
3) and 4) the same thing but switch scientific and common.
The second screenshot shows what this looks like in the app. The search filters are on the top, and the opposite name is shown below (in this example, scientific was selected, so the common shows below).
I hope this helps.