Azért írom ezt a cikket, mert nemrég belefutottam valamibe, amire a Salesforce-nak nincs kész megoldása. Egy projektben tudnunk kellett lekérni az aktuális felhasználó nyelvétől eltérő nyelvek válogatási listáit.

Ha szeretne lefordított címkét kapni a jelenlegi nyelvén, valószínűleg már tudja, hogy az alábbi SOQL-lekérdezést használhatja az Apexben a lefordított címke lekéréséhez:

SELECT TOLABEL(FieldName) FROM Account WHERE …

De mi van akkor, ha az Ön jelenlegi nyelve angolra van állítva, és szeretné lekérni ennek a mezőnek a francia fordítását? Ez egy használati eset lehet, ha egyéni REST API-val rendelkezik, és az „Accept-Language” fejlécben megadott nyelven szeretne értékeket lekérni.

Sok kérdés van ezzel kapcsolatban a Stackoverflow-n, a fejlesztői fórumokon, és még a Salesforce Ideas-nél is javaslatok vannak. De nem találtam megoldást, ezért írtam a sajátomat:





https://gist.github.com/jverelst/eb791fd3a6a97722845369698e0d35eb



A kód mögött az az ötlet, hogy a kiválasztási lista értékeket egy olyan VisualForce-oldal használatával töltse be, amely más nyelven futni lett konfigurálva. A hibakeresési naplókban látni fog egy külön tranzakciót, amely a VF oldal lekérésére fut, és ez a tranzakció a megadott nyelven fut.

Ha ezt a példát a saját éles szervezetében használná, javasolnám a Platform Cache használatát, mert a fordítások általában nem változnak gyakran. De ezt a részt hagyom gyakorlatnak :-)