join two tables and limit results by an ordered list
you need to join table with priority and use ROW_NUMBER function to sort rows for each property, then you just need to leave rows with row number = 1:
WITH CTE AS (
SELECT t1.property
,t1.value
,ROW_NUMBER() OVER (PARTITION BY t1.property ORDER BY t2.priority) AS rn
FROM i18n t1
JOIN i18n_cfg t2 ON t1.locale = t2.locale
WHERE t1.app = 'test' 
AND t2.user = 'lm'
)
SELECT property, value
FROM CTE 
WHERE rn = 1

solution without window functions and variables:
SELECT t1.property 
,(SELECT t2.value
  FROM i18n AS t2
  JOIN i18n_cfg AS t3 ON t2.locale = t3.locale
  WHERE t2.property = t1.property
  AND t2.app = 'test'
  AND t3.user = 'lm'
  ORDER BY t3.priority
  LIMIT 1) AS value
FROM
(
SELECT DISTINCT property
FROM i18n
WHERE app = 'test'
) AS t1

link to dbfiddle: https://dbfiddle.uk/?rdbms=mysql_8.0&amp;fiddle=cf1d3f4757c3d84d3f5ad2bea0966a3c