"Best" clearly depends on the situation.
Benefits of using a text file:
- Easier, quicker development.
- No database hits.
- Can be stored and managed through source code control system.
- Text changes can go through standard QA process.
- Common solution in other il8n frameworks.
Drawbacks of using a text file:
- The strings basically become a "software artifact" - only developers can change them, and a simple change requires a software release.
- Hard to apply formatting to the text, no WYSIWYG.
Benefits of using a database:
- Changes can be done through admin interface, so no technical skills required, and no software release.
Drawbacks of database:
- Moderate amount of effort to build simple version.
- Significant amount of work to build sophisticated version (versioning, test/preview mode); rapidly approaches build of Content Management System in scope.
- Can introduce performance hit if you don't get the caching right.