Please print this out, sign it, write the date, and snail it to
this address:

Attn: Disclaimer Clerk
Free Software Foundation
51 Franklin Street, Fifth Floor
Boston, MA 02110-1301
USA

Please print your email and snail addresses on the printed disclaimer.
*Don't forget to include the date.*

In the unlikely event that you are employed on a continuing basis to do
translation, we may need a disclaimer from your employer as well, to assure
your employer does not claim to own this work.  Please contact the FSF to
ask for advice if you think this may apply to you.

Note: if you want the wording modified to cover only a specific category
of programs, or a specific program, we can easily do that.


   DISCLAIMER OF COPYRIGHT IN TRANSLATIONS OF PARTS OF PROGRAMS

I, _____________________________________, a citizen of _____________
(country), do hereby acknowledge to the Free Software Foundation, a
not-for-profit corporation of Massachusetts, USA, that I disclaim all
copyright interest in my works, which consist of translation of
portions of free software programs from one human language to another
human language, that I have provided to the Foundation or that I will
provide in the future.  The programs to which this applies include all
programs for which the Foundation is the copyright holder, and all
other freely redistributable software programs.

The translations covered by this disclaimer include, without
limitation, translations of textual messages, glossaries, command or
option names, help files, user interface text, and the like, contained
within or made for use via these programs.

    Given as a sealed instrument this ___ day of ______ (month), ______
(year), at _____________________ (city and country).
   

               signed:         ___________________________
 
               email address:  ___________________________

               postal address: ___________________________

		               ___________________________

		               ___________________________

 

I currently expect to work on the following translation teams (though
this disclaimer applies to all such translations that I may
subsequently provide to the FSF, whatever the language):

	__________________________________________________

        __________________________________________________

