Нашел проблему, 3-й способ работает.
Это потому, что я использую 2 пакета ресурсов в своем проекте, один - сообщения (общие), а другой - myMessage.
Сначала при определении комплекта ресурсов в файле component.xml я определяю только комплект ресурсов myMessage.
<core:resource-loader bundle-names="my">
<core:bundle-names>
<value>myMessage</value>
</core:bundle-names>
</core:resource-loader>
В файлеface-config.xml я определил языковую поддержку.
<application>
<view-handler>com.sun.facelets.FaceletViewHandler</view-handler>
<locale-config>
<default-locale>en</default-locale>
<supported-locale>bg</supported-locale>
<supported-locale>de</supported-locale>
<supported-locale>en</supported-locale>
<supported-locale>fr</supported-locale>
<supported-locale>tr</supported-locale>
<supported-locale>ja</supported-locale>
</locale-config>
<message-bundle>messages</message-bundle>
</application>
А при использовании 3-го способа он возвращает только пакет сообщений.
Чтобы это исправить, нужно только добавить пакет сообщений в файл components.xml и удалить имя в ядре: resource-loader.
<core:resource-loader>
<core:bundle-names>
<value>messages</value>
<value>myMessage</value>
</core:bundle-names>
</core:resource-loader>
Вот и все.