# App::I18N ## Description App::I18N borrows some good stuff from Jifty::I18N and tries to provide a general po management script for all frameworks | applications. ## Basic flow ### Basic po file manipulation: parse strings from `lib` path: $ cd app $ po parse lib this will generate: po/app.pot please modify the CHARSET in po/app.pot. ... modify CHARSET ... create new language file (po file): po lang en po lang fr po lang ja po lang zh_TW this will generate: po/en.po po/fr.po po/ja.po po/zh_TW.po do translations .... when you added more message in your application. you might need to update po messages, but you dont have to delete/recreate these po files, you can just parse your messages again all of your translations will be kept. eg: $ po parse parse lib do translation again ... ### Generate locale and mo file for php-gettext or anyother gettext i18n app: parse strings from `.` path and use --locale (locale directory structure) , --mo (generate mo file) option: $ cd app $ po parse --locale --mo . (the same): $ po parse -g . this will generate: po/app.pot please modify the CHARSET in po/app.pot. ... modify CHARSET ... create new language file (po file and mo file) in locale directory structure: $ po lang --locale --mo en $ po lang --locale --mo zh_TW (the same): $ po lang -g zh_TW this will generate: po/en/LC_MESSAGES/app.po po/en/LC_MESSAGES/app.mo po/zh_TW/LC_MESSAGES/app.po po/zh_TW/LC_MESSAGES/app.mo (you can use --podir option to generate those stuff to other directory) ... do translation here ... if you use mo file , you might need to update mo file. $ po update --mo eg: -project (master) % po update --mo --podir locale Updating locale/zh_TW/LC_MESSAGES/project.po Updating locale/zh_TW/LC_MESSAGES/project.mo 9 translated messages, 53 untranslated messages. ## Usage create dictionary files for language: $ po lang zh_tw en parse i18n strings: $ po parse bin lib static share/web/static/js ... start a web server to edit po file: $ po server -f po/en.po start a web server to edit po file of specified language: $ po server --lang en extract message from files and start a web server: $ po server --dir lib --dir share/static --lang en ## **TODO** * Initialize a system-side i18n database: po initdb * Initialize a temporary SQLite database for collaborative editing, and write back when INT/TERM signal recevied or could be triggered by a submit button.