If it is not needed to translate IDs you could map the translatable array entries to IDs in code. Advantage of that would be that you can avoid accidential order mismatches between IDs and values. For that use string resources for every array entry:
@string/text_1
@string/test_2
...
My first entry
My second entry
...
In code retrieve the string resources and put them as key + ID into a hash map:
val myArrayIdMap: HashMap = java.util.HashMap()
myArrayIdMap[getString(R.string.text_1)] = "id-1"
myArrayIdMap[getString(R.string.text_2)] = "id-2"
...
To get the ID of a specific string use the map, for example if the string array is used in a spinner, the select listener could retrieve the ID:
...
override fun onItemSelected(parent: AdapterView?, view: View?, position: Int, id: Long) {
val selectedEntry: String = parent?.getItemAtPosition(position).toString()
val id: String = myArrayIdMap.get(selectedEntry)
}