SOQLで選択リストの表示ラベルを取得する
作業中の別問題の調査で引っかかり、忘れないようにメモっておきます。
問題:選択リスト値が翻訳されない。
翻訳設定を利用して、ユーザー言語に合わせて日本語と英語で表示していたけど、
あるカスタムLWC作成で、Datatableに詰め込んだデータの選択リストが翻訳されなくなっている。
原因:PickListのAPI参照名を取得していた。
SOQLで普通に選択リスト項目を取得すると、API参照名が取得されること。
[Select PickList__c From SomeCustomObject__c ];
上記だとAPI参照名が取得されるが、あいにく、設計が悪く、
ラベルとAPI参照名が同じになっていて、API参照名を取得したのを画面から気付かなかった。
ちなみに、API参照名だと翻訳が適用されないようだ。
対処:toLabel()で選択リスト項目のラベルを取得する。
そして、選択リスト項目にtoLabelメソッドを利用することで、選択リスト項目のラベルが取得でき、翻訳も正しく行えるようになる。
[Select toLabel(PickList__c) From SomeCustomObject__c ];
ちなみに、ラベルとAPI参照名の両方を取得したい場合は、
下記のように別名つける方法で対応できる。
[Select PickList__c, toLabel(PickList__c) picklistLabel From SomeCustomObject__c ];
※:SOQLで通常は項目に別名つけられません。集計関数など利用時のみ別名つけ可能