Update cinder.po file
cat /usr/lib/python2.6/site-packages/cinder/locale/ja/LC_MESSAGES/cinder.po
...
#: cinder/exception.py:620
#, python-format
msgid "Backup %(backup_id)s could not be found."
msgstr "Nick %(backup_id)s put this message here."
...
Compile new .mo file, install
msgfmt -o cinder.mo /usr/lib/python2.6/site-packages/cinder/locale/ja/LC_MESSAGES/cinder.po
cp cinder.mo /usr/share/locale/ja_JP/LC_MESSAGES/
cp cinder.mo /usr/share/locale/ja/LC_MESSAGES/
Restart cinder services
service openstack-cinder-volume restart
service openstack-cinder-scheduler restart
service openstack-cinder-api restart
API call to trigger translated message
curl -i http://127.0.0.1:8776/v1/1aaa0b70c70d43318230b926febd0da6/backups/blah -X GET -H "X-Auth-Project-Id: service" -H "User-Agent: python-cinderclient" -H "Accept: application/json" -H "X-Auth-Token: MIIMVwYJKoZIhvcNAQcCoIIMSDCCDEQCAQExCTAHBgUrDgMCGjCCCq0GCSqGSIb3DQEHAaCCCp4EggqaeyJhY2Nlc3MiOiB7InRva2VuIjogeyJpc3N1ZWRfYXQiOiAiMjAxMy0wOC0xOVQxNTo0NzoxMi45NDQxMTgiLCAiZXhwaXJlcyI6ICIyMDEzLTA4LTIwVDE1OjQ3OjEyWiIsICJpZCI6ICJwbGFjZWhvbGRlciIsICJ0ZW5hbnQiOiB7ImRlc2NyaXB0aW9uIjogIlNlcnZpY2UgVGVuYW50IiwgImVuYWJsZWQiOiB0cnVlLCAiaWQiOiAiMWFhYTBiNzBjNzBkNDMzMTgyMzBiOTI2ZmViZDBkYTYiLCAibmFtZSI6ICJzZXJ2aWNlIn19LCAic2VydmljZUNhdGFsb2ciOiBbeyJlbmRwb2ludHMiOiBbeyJhZG1pblVSTCI6ICJodHRwOi8vMTI3LjAuMC4xOjg3NzQvdjIvMWFhYTBiNzBjNzBkNDMzMTgyMzBiOTI2ZmViZDBkYTYiLCAicmVnaW9uIjogIlJlZ2lvbk9uZSIsICJpbnRlcm5hbFVSTCI6ICJodHRwOi8vMTI3LjAuMC4xOjg3NzQvdjIvMWFhYTBiNzBjNzBkNDMzMTgyMzBiOTI2ZmViZDBkYTYiLCAiaWQiOiAiMjkyOGZlNTdmZGNhNDlhZWI3NWY5NjMxYTJlMTk3NmIiLCAicHVibGljVVJMIjogImh0dHA6Ly8xMjcuMC4wLjE6ODc3NC92Mi8xYWFhMGI3MGM3MGQ0MzMxODIzMGI5MjZmZWJkMGRhNiJ9XSwgImVuZHBvaW50c19saW5rcyI6IFtdLCAidHlwZSI6ICJjb21wdXRlIiwgIm5hbWUiOiAibm92YSJ9LCB7ImVuZHBvaW50cyI6IFt7ImFkbWluVVJMIjogImh0dHA6Ly8xMjcuMC4wLjE6OTY5NiIsICJyZWdpb24iOiAiUmVnaW9uT25lIiwgImludGVybmFsVVJMIjogImh0dHA6Ly8xMjcuMC4wLjE6OTY5NiIsICJpZCI6ICI1MTU3MTg2ZDc5YWE0MzE5YjlkNWU3OTk1MmZjZDQwMyIsICJwdWJsaWNVUkwiOiAiaHR0cDovLzEyNy4wLjAuMTo5Njk2In1dLCAiZW5kcG9pbnRzX2xpbmtzIjogW10sICJ0eXBlIjogIm5ldHdvcmsiLCAibmFtZSI6ICJuZXV0cm9uIn0sIHsiZW5kcG9pbnRzIjogW3siYWRtaW5VUkwiOiAiaHR0cDovLzEyNy4wLjAuMTo5MjkyIiwgInJlZ2lvbiI6ICJSZWdpb25PbmUiLCAiaW50ZXJuYWxVUkwiOiAiaHR0cDovLzEyNy4wLjAuMTo5MjkyIiwgImlkIjogIjkxM2M3MWE0ZjExYTQ2N2NhODk2NmE3YTI2MjkzYzcyIiwgInB1YmxpY1VSTCI6ICJodHRwOi8vMTI3LjAuMC4xOjkyOTIifV0sICJlbmRwb2ludHNfbGlua3MiOiBbXSwgInR5cGUiOiAiaW1hZ2UiLCAibmFtZSI6ICJnbGFuY2UifSwgeyJlbmRwb2ludHMiOiBbeyJhZG1pblVSTCI6ICJodHRwOi8vMTI3LjAuMC4xOjg3NzciLCAicmVnaW9uIjogIlJlZ2lvbk9uZSIsICJpbnRlcm5hbFVSTCI6ICJodHRwOi8vMTI3LjAuMC4xOjg3NzciLCAiaWQiOiAiMmJiMTZlYWViYzFhNDA0OGFmMWFhZDMyMDVkYzI0NmQiLCAicHVibGljVVJMIjogImh0dHA6Ly8xMjcuMC4wLjE6ODc3NyJ9XSwgImVuZHBvaW50c19saW5rcyI6IFtdLCAidHlwZSI6ICJtZXRlcmluZyIsICJuYW1lIjogImNlaWxvbWV0ZXIifSwgeyJlbmRwb2ludHMiOiBbeyJhZG1pblVSTCI6ICJodHRwOi8vMTI3LjAuMC4xOjg3NzYvdjEvMWFhYTBiNzBjNzBkNDMzMTgyMzBiOTI2ZmViZDBkYTYiLCAicmVnaW9uIjogIlJlZ2lvbk9uZSIsICJpbnRlcm5hbFVSTCI6ICJodHRwOi8vMTI3LjAuMC4xOjg3NzYvdjEvMWFhYTBiNzBjNzBkNDMzMTgyMzBiOTI2ZmViZDBkYTYiLCAiaWQiOiAiMWFhYTk2MDIwNTA1NDI0NzhjM2NhYjc2ZmQ5YWM5NjMiLCAicHVibGljVVJMIjogImh0dHA6Ly8xMjcuMC4wLjE6ODc3Ni92MS8xYWFhMGI3MGM3MGQ0MzMxODIzMGI5MjZmZWJkMGRhNiJ9XSwgImVuZHBvaW50c19saW5rcyI6IFtdLCAidHlwZSI6ICJ2b2x1bWUiLCAibmFtZSI6ICJjaW5kZXIifSwgeyJlbmRwb2ludHMiOiBbeyJhZG1pblVSTCI6ICJodHRwOi8vMTI3LjAuMC4xOjg3NzYvdjEvQVVUSF8xYWFhMGI3MGM3MGQ0MzMxODIzMGI5MjZmZWJkMGRhNiIsICJyZWdpb24iOiAiUmVnaW9uT25lIiwgImludGVybmFsVVJMIjogImh0dHA6Ly8xMjcuMC4wLjE6ODc3Ni92MS9BVVRIXzFhYWEwYjcwYzcwZDQzMzE4MjMwYjkyNmZlYmQwZGE2IiwgImlkIjogIjI5MWM0MmYwYjQ0NjRmNjRhOGU5NzNmY2Q1ZTcyYWY5IiwgInB1YmxpY1VSTCI6ICJodHRwOi8vMTI3LjAuMC4xOjg3NzYvdjEvQVVUSF8xYWFhMGI3MGM3MGQ0MzMxODIzMGI5MjZmZWJkMGRhNiJ9XSwgImVuZHBvaW50c19saW5rcyI6IFtdLCAidHlwZSI6ICJvYmplY3Qtc3RvcmUiLCAibmFtZSI6ICJzd2lmdCJ9LCB7ImVuZHBvaW50cyI6IFt7ImFkbWluVVJMIjogImh0dHA6Ly8xMjcuMC4wLjE6MzUzNTcvdjIuMCIsICJyZWdpb24iOiAiUmVnaW9uT25lIiwgImludGVybmFsVVJMIjogImh0dHA6Ly8xMjcuMC4wLjE6NTAwMC92Mi4wIiwgImlkIjogIjI5M2FmNjJhZTQ1MDQxOGVhNWU4ZmZhYjU0Njg5MDdmIiwgInB1YmxpY1VSTCI6ICJodHRwOi8vMTI3LjAuMC4xOjUwMDAvdjIuMCJ9XSwgImVuZHBvaW50c19saW5rcyI6IFtdLCAidHlwZSI6ICJpZGVudGl0eSIsICJuYW1lIjogImtleXN0b25lIn1dLCAidXNlciI6IHsidXNlcm5hbWUiOiAiYWRtaW4iLCAicm9sZXNfbGlua3MiOiBbXSwgImlkIjogIjk2ZWVlZTg5YzQzYzQ5ZGI4NmM3YTVmMjdmMWFmZDE4IiwgInJvbGVzIjogW3sibmFtZSI6ICJhZG1pbiJ9LCB7Im5hbWUiOiAiX21lbWJlcl8ifV0sICJuYW1lIjogImFkbWluIn0sICJtZXRhZGF0YSI6IHsiaXNfYWRtaW4iOiAwLCAicm9sZXMiOiBbIjNmZjljOTQ4OTRiMTQ0NTI5MjJjYjE3ZWU3MTllNGFhIiwgIjlmZTJmZjllZTQzODRiMTg5NGE5MDg3OGQzZTkyYmFiIl19fX0xggGBMIIBfQIBATBcMFcxCzAJBgNVBAYTAlVTMQ4wDAYDVQQIDAVVbnNldDEOMAwGA1UEBwwFVW5zZXQxDjAMBgNVBAoMBVVuc2V0MRgwFgYDVQQDDA93d3cuZXhhbXBsZS5jb20CAQEwBwYFKw4DAhowDQYJKoZIhvcNAQEBBQAEggEAtXHdf9GR-2xMG9I36aHp0wcVT85mqBKBqYrC5HWnb9zpH0yEc4b5OTWJJz-D7Mfgk9S9mZjy12I--aCQc8lSSCRmGTbxi4SxmuyAWMTI1dca059PXP-Z3p6lx477h+L5XmXtoAfY8tx2UBtvvQuZ7ovwj98s2po8R73b1ii2z9WSGaUoRe3LNiEcY1IPEB9KCzYkCM5PNknS--wEGBynbrx-dA2ZWkirpw+GUuX2So5nelVrCur3PYotK1xJGmxdvj0QmKq-hfwP2WuATzLOhVK8AAD+WRv8LYu72TBJt-18ZUam2+W+n2Cn1V12OMDLolnf-ywlfol06onM3YiHoA==" -H "Accept-Language: ja"
Response still in "english'
HTTP/1.1 404 Not Found
Content-Length: 77
Content-Type: application/json; charset=UTF-8
X-Compute-Request-Id: req-b996b5ab-37d2-4e36-87b5-79a8a7b8be89
Date: Mon, 19 Aug 2013 15:58:59 GMT
{"itemNotFound": {"message": "Backup blah could not be found.", "code": 404}}
Update system locale to make sure error message is properly translated (ie, didn't mess up the installation piece)
cat /etc/sysconfig/i18n
LANG="ja_JP.UTF-8"
#LANG="en_US.UTF-8"
SYSFONT="latarcyrheb-sun16"
Restart servers
service openstack-cinder-volume restart
service openstack-cinder-scheduler restart
service openstack-cinder-api restart
Response is "translated"
curl -i http://127.0.0.1:8776/v1/1aaa0b70c70d43318230b926febd0da6/backups/blah -X GET -H "X-Auth-Project-Id: service" -H "User-Agent: python-cinderclient" -H "Accept: application/json" -H "X-Auth-Token: MIIMVwYJKoZIhvcNAQcCoIIMSDCCDEQCAQExCTAHBgUrDgMCGjCCCq0GCSqGSIb3DQEHAaCCCp4EggqaeyJhY2Nlc3MiOiB7InRva2VuIjogeyJpc3N1ZWRfYXQiOiAiMjAxMy0wOC0xOVQxNTo0NzoxMi45NDQxMTgiLCAiZXhwaXJlcyI6ICIyMDEzLTA4LTIwVDE1OjQ3OjEyWiIsICJpZCI6ICJwbGFjZWhvbGRlciIsICJ0ZW5hbnQiOiB7ImRlc2NyaXB0aW9uIjogIlNlcnZpY2UgVGVuYW50IiwgImVuYWJsZWQiOiB0cnVlLCAiaWQiOiAiMWFhYTBiNzBjNzBkNDMzMTgyMzBiOTI2ZmViZDBkYTYiLCAibmFtZSI6ICJzZXJ2aWNlIn19LCAic2VydmljZUNhdGFsb2ciOiBbeyJlbmRwb2ludHMiOiBbeyJhZG1pblVSTCI6ICJodHRwOi8vMTI3LjAuMC4xOjg3NzQvdjIvMWFhYTBiNzBjNzBkNDMzMTgyMzBiOTI2ZmViZDBkYTYiLCAicmVnaW9uIjogIlJlZ2lvbk9uZSIsICJpbnRlcm5hbFVSTCI6ICJodHRwOi8vMTI3LjAuMC4xOjg3NzQvdjIvMWFhYTBiNzBjNzBkNDMzMTgyMzBiOTI2ZmViZDBkYTYiLCAiaWQiOiAiMjkyOGZlNTdmZGNhNDlhZWI3NWY5NjMxYTJlMTk3NmIiLCAicHVibGljVVJMIjogImh0dHA6Ly8xMjcuMC4wLjE6ODc3NC92Mi8xYWFhMGI3MGM3MGQ0MzMxODIzMGI5MjZmZWJkMGRhNiJ9XSwgImVuZHBvaW50c19saW5rcyI6IFtdLCAidHlwZSI6ICJjb21wdXRlIiwgIm5hbWUiOiAibm92YSJ9LCB7ImVuZHBvaW50cyI6IFt7ImFkbWluVVJMIjogImh0dHA6Ly8xMjcuMC4wLjE6OTY5NiIsICJyZWdpb24iOiAiUmVnaW9uT25lIiwgImludGVybmFsVVJMIjogImh0dHA6Ly8xMjcuMC4wLjE6OTY5NiIsICJpZCI6ICI1MTU3MTg2ZDc5YWE0MzE5YjlkNWU3OTk1MmZjZDQwMyIsICJwdWJsaWNVUkwiOiAiaHR0cDovLzEyNy4wLjAuMTo5Njk2In1dLCAiZW5kcG9pbnRzX2xpbmtzIjogW10sICJ0eXBlIjogIm5ldHdvcmsiLCAibmFtZSI6ICJuZXV0cm9uIn0sIHsiZW5kcG9pbnRzIjogW3siYWRtaW5VUkwiOiAiaHR0cDovLzEyNy4wLjAuMTo5MjkyIiwgInJlZ2lvbiI6ICJSZWdpb25PbmUiLCAiaW50ZXJuYWxVUkwiOiAiaHR0cDovLzEyNy4wLjAuMTo5MjkyIiwgImlkIjogIjkxM2M3MWE0ZjExYTQ2N2NhODk2NmE3YTI2MjkzYzcyIiwgInB1YmxpY1VSTCI6ICJodHRwOi8vMTI3LjAuMC4xOjkyOTIifV0sICJlbmRwb2ludHNfbGlua3MiOiBbXSwgInR5cGUiOiAiaW1hZ2UiLCAibmFtZSI6ICJnbGFuY2UifSwgeyJlbmRwb2ludHMiOiBbeyJhZG1pblVSTCI6ICJodHRwOi8vMTI3LjAuMC4xOjg3NzciLCAicmVnaW9uIjogIlJlZ2lvbk9uZSIsICJpbnRlcm5hbFVSTCI6ICJodHRwOi8vMTI3LjAuMC4xOjg3NzciLCAiaWQiOiAiMmJiMTZlYWViYzFhNDA0OGFmMWFhZDMyMDVkYzI0NmQiLCAicHVibGljVVJMIjogImh0dHA6Ly8xMjcuMC4wLjE6ODc3NyJ9XSwgImVuZHBvaW50c19saW5rcyI6IFtdLCAidHlwZSI6ICJtZXRlcmluZyIsICJuYW1lIjogImNlaWxvbWV0ZXIifSwgeyJlbmRwb2ludHMiOiBbeyJhZG1pblVSTCI6ICJodHRwOi8vMTI3LjAuMC4xOjg3NzYvdjEvMWFhYTBiNzBjNzBkNDMzMTgyMzBiOTI2ZmViZDBkYTYiLCAicmVnaW9uIjogIlJlZ2lvbk9uZSIsICJpbnRlcm5hbFVSTCI6ICJodHRwOi8vMTI3LjAuMC4xOjg3NzYvdjEvMWFhYTBiNzBjNzBkNDMzMTgyMzBiOTI2ZmViZDBkYTYiLCAiaWQiOiAiMWFhYTk2MDIwNTA1NDI0NzhjM2NhYjc2ZmQ5YWM5NjMiLCAicHVibGljVVJMIjogImh0dHA6Ly8xMjcuMC4wLjE6ODc3Ni92MS8xYWFhMGI3MGM3MGQ0MzMxODIzMGI5MjZmZWJkMGRhNiJ9XSwgImVuZHBvaW50c19saW5rcyI6IFtdLCAidHlwZSI6ICJ2b2x1bWUiLCAibmFtZSI6ICJjaW5kZXIifSwgeyJlbmRwb2ludHMiOiBbeyJhZG1pblVSTCI6ICJodHRwOi8vMTI3LjAuMC4xOjg3NzYvdjEvQVVUSF8xYWFhMGI3MGM3MGQ0MzMxODIzMGI5MjZmZWJkMGRhNiIsICJyZWdpb24iOiAiUmVnaW9uT25lIiwgImludGVybmFsVVJMIjogImh0dHA6Ly8xMjcuMC4wLjE6ODc3Ni92MS9BVVRIXzFhYWEwYjcwYzcwZDQzMzE4MjMwYjkyNmZlYmQwZGE2IiwgImlkIjogIjI5MWM0MmYwYjQ0NjRmNjRhOGU5NzNmY2Q1ZTcyYWY5IiwgInB1YmxpY1VSTCI6ICJodHRwOi8vMTI3LjAuMC4xOjg3NzYvdjEvQVVUSF8xYWFhMGI3MGM3MGQ0MzMxODIzMGI5MjZmZWJkMGRhNiJ9XSwgImVuZHBvaW50c19saW5rcyI6IFtdLCAidHlwZSI6ICJvYmplY3Qtc3RvcmUiLCAibmFtZSI6ICJzd2lmdCJ9LCB7ImVuZHBvaW50cyI6IFt7ImFkbWluVVJMIjogImh0dHA6Ly8xMjcuMC4wLjE6MzUzNTcvdjIuMCIsICJyZWdpb24iOiAiUmVnaW9uT25lIiwgImludGVybmFsVVJMIjogImh0dHA6Ly8xMjcuMC4wLjE6NTAwMC92Mi4wIiwgImlkIjogIjI5M2FmNjJhZTQ1MDQxOGVhNWU4ZmZhYjU0Njg5MDdmIiwgInB1YmxpY1VSTCI6ICJodHRwOi8vMTI3LjAuMC4xOjUwMDAvdjIuMCJ9XSwgImVuZHBvaW50c19saW5rcyI6IFtdLCAidHlwZSI6ICJpZGVudGl0eSIsICJuYW1lIjogImtleXN0b25lIn1dLCAidXNlciI6IHsidXNlcm5hbWUiOiAiYWRtaW4iLCAicm9sZXNfbGlua3MiOiBbXSwgImlkIjogIjk2ZWVlZTg5YzQzYzQ5ZGI4NmM3YTVmMjdmMWFmZDE4IiwgInJvbGVzIjogW3sibmFtZSI6ICJhZG1pbiJ9LCB7Im5hbWUiOiAiX21lbWJlcl8ifV0sICJuYW1lIjogImFkbWluIn0sICJtZXRhZGF0YSI6IHsiaXNfYWRtaW4iOiAwLCAicm9sZXMiOiBbIjNmZjljOTQ4OTRiMTQ0NTI5MjJjYjE3ZWU3MTllNGFhIiwgIjlmZTJmZjllZTQzODRiMTg5NGE5MDg3OGQzZTkyYmFiIl19fX0xggGBMIIBfQIBATBcMFcxCzAJBgNVBAYTAlVTMQ4wDAYDVQQIDAVVbnNldDEOMAwGA1UEBwwFVW5zZXQxDjAMBgNVBAoMBVVuc2V0MRgwFgYDVQQDDA93d3cuZXhhbXBsZS5jb20CAQEwBwYFKw4DAhowDQYJKoZIhvcNAQEBBQAEggEAtXHdf9GR-2xMG9I36aHp0wcVT85mqBKBqYrC5HWnb9zpH0yEc4b5OTWJJz-D7Mfgk9S9mZjy12I--aCQc8lSSCRmGTbxi4SxmuyAWMTI1dca059PXP-Z3p6lx477h+L5XmXtoAfY8tx2UBtvvQuZ7ovwj98s2po8R73b1ii2z9WSGaUoRe3LNiEcY1IPEB9KCzYkCM5PNknS--wEGBynbrx-dA2ZWkirpw+GUuX2So5nelVrCur3PYotK1xJGmxdvj0QmKq-hfwP2WuATzLOhVK8AAD+WRv8LYu72TBJt-18ZUam2+W+n2Cn1V12OMDLolnf-ywlfol06onM3YiHoA==" -H 'Accept-Language: ja'
HTTP/1.1 404 Not Found
Content-Length: 78
Content-Type: application/json; charset=UTF-8
X-Compute-Request-Id: req-16e980c6-8e6d-46b7-ade0-f5bf363a73f6
Date: Mon, 19 Aug 2013 16:03:57 GMT
{"itemNotFound": {"message": "Nick blah put this message here.", "code": 404}}
Fix proposed to branch: master /review. openstack. org/42726
Review: https:/