From: %YOU%
To: %INDIVIDUAL%
CC: private@couchdb.apache.org
Subject: Invitation to join the CouchDB translation team
================================================================================

Dear %NAME%,

Thank you for indicating that you would like to join the Apache CouchDB translation team.

Before we can create a translation account for you, please answer the following:

 - What is your preferred username?

 - Which language would you like to contribute to?

 - Are your contributions licensed to the public under the Apache License 2.0?

(Your answer to the last question must be yes. But we need confirmation.)

Please reply to this email with your answers, making sure to copy private@couchdb.apache.org.

If everything is satisfactory, we will create a translation account for you. You will then receive a confirmation email with your username and further instructions on how to set up your password.

For more information, see:

    https://cwiki.apache.org/confluence/display/COUCHDB/Translation+Guide

If you have any questions, please reply to this mail.

On behalf of the CouchDB translation Team,
