You may not be looking for the order by solution, but it's far superior to branching if/else PL/SQL!
If you need to do this in PL/SQL, just put it in a procedure:
create or replace procedure p as
begin
select ...
into ...
from (
select * from temp1
where version in ('en', 'I') or version is null
order by case
when version = 'en' then 1
when version = 'I' then 2
when version is null then 3
end
)
where rownum = 1;
end;
/