Translation Introduction

From ReactOS Wiki
Revision as of 05:46, 3 January 2010 by Samuel1991 (talk | contribs)
Jump to: navigation, search

The ReactOS team welcomes anyone who wish to contribute by translating. This article is written to help you to get started.

If you need more help about things, that are not covered by the article, feel free to send your question to the translation mailing list (ros-translate). You can also ask in the ReactOS IRC Channels.

First steps

您应该做的第一件事是检查是否有其他人正在翻译您要翻译的语言。您可以在 List of Translators 页上看到语言和翻译人员的列表, 您可以在 IRC 试图联系他们。 如果有列出其他的翻译员,您应该联络他们并告诉他们您对翻译表示感到兴趣。您也可以向他们询问关于实际翻译的概况。

如果您对语言并未列出,请自便写下您的语言于 List of Translators 页。 请在语言栏写下您的姓名和电邮。

如何翻译

翻译 ReactOS 是通过编辑不同的资源文件 (.rc)。有些人在寻找他们时遇到困难因此以下将会显示他们的路径。切记:如果该语言文件不存在时,您必须要更改 "#include" 指令于 rsrc.rc 文件!

Wine translations

The files coming from Wine should be translated in Wine to have them imported later automatically.

Here is the list of Wine related files http://svn.reactos.org/svn/reactos/trunk/reactos/media/doc/README.WINE?view=markup

How to send translations to Wine is described here http://wiki.winehq.org/SubmittingPatches

Translate ReactOS

The following sample list is the result of a search for "en.rc" against the source, it may not reflect all the files that need/should to be translated.

Individual En.rc Files - Main Tree

\base\applications\cacls\
\base\applications\calc\
\base\applications\charmap\
\base\applications\cmdutils\find\
\base\applications\cmdutils\more\
\base\applications\cmdutils\xcopy\
\base\applications\dxdiag\
\base\applications\games\solitaire\
\base\applications\games\winemine\
\base\applications\kbswitch\
\base\applications\logoff\
\base\applications\mmc\
\base\applications\msconfig\
\base\applications\mscutils\devmgmt\
\base\applications\mscutils\eventvwr\
\base\applications\mscutils\servman\
\base\applications\mstsc\
\base\applications\network\ipconfig\
\base\applications\notepad\
\base\applications\regedit\
\base\applications\regedit\clb\
\base\applications\screensavers\3dtext\
\base\applications\screensavers\logon\
\base\applications\shutdown\
\base\applications\sndvol32\
\base\applications\taskmgr\
\base\applications\winhelp\
\base\applications\wordpad\
\base\setup\reactos\
\base\setup\usetup\
\base\setup\vmwinst\
\base\setup\welcome\
\base\shell\cmd\
\base\shell\explorer\
\base\shell\explorer-new\
\base\system\expand\
\base\system\format\
\base\system\regsvr32\
\base\system\rundll32\
\base\system\userinit\
\base\system\winlogon\
\boot\freeldr\fdebug\
\dll\cpl\access\
\dll\cpl\appwiz\
\dll\cpl\console\
\dll\cpl\desk\
\dll\cpl\hdwwiz\
\dll\cpl\input\
\dll\cpl\intl\
\dll\cpl\joy\
\dll\cpl\liccpa\
\dll\cpl\main\
\dll\cpl\mmsys\
\dll\cpl\ncpa\
\dll\cpl\powercfg\
\dll\cpl\sysdm\
\dll\cpl\telephon\
\dll\cpl\timedate\
\dll\cpl\usrmgr\
\dll\win32\aclui\
\dll\win32\avifil32\
\dll\win32\comctl32\
\dll\win32\comdlg32\
\dll\win32\crypt32\
\dll\win32\devmgr\
\dll\win32\hhctrl.ocx\
\dll\win32\modemui\
\dll\win32\mpr\
\dll\win32\msacm\
\dll\win32\msgina\
\dll\win32\msi\
\dll\win32\msvfw32\
\dll\win32\netid\
\dll\win32\netshell\
\dll\win32\newdev\
\dll\win32\oleaut32\
\dll\win32\oledlg\
\dll\win32\rasapi32\
\dll\win32\rasdlg\
\dll\win32\serialui\
\dll\win32\setupapi\
\dll\win32\shdocvw\
\dll\win32\shell32\
\dll\win32\shimgvw
\dll\win32\shlwapi\
\dll\win32\syssetup\
\dll\win32\tapiui\
\dll\win32\user32\
\dll\win32\userenv\
\dll\win32\wininet\
\dll\win32\winmm\
\dll\win32\wldap32\
\dll\shellext\deskadp\
\dll\shellext\deskmon\
\dll\shellext\slayer\
\subsystems\ntvdm\
\subsystems\win32\csrss\win32csr\

Where to download the files

The latest files are available in our Subversion repository. Make sure you get the files from there and not from any release since they might be outdated. You can browse and download single files from SVN through our ViewCVS

How to translate the files

Below is an example rc-file from ReactOS Access Control List Editor (aclui).

(Note that in a few lines some unimportant things, from a translation point of view, have been cut out fit the formatting of this page)

#include <reactos/resource.h>
#include <defines.h>
#include "resource.h"

LANGUAGE LANG_ENGLISH, SUBLANG_NEUTRAL

IDD_SECPAGE DIALOGEX 0, 0, 227, 215
STYLE WS_CHILD | WS_VISIBLE | WS_CAPTION
CAPTION "Security"
FONT 8, "MS Shell Dlg", 0, 0, 0x0
BEGIN
  LTEXT "&Group or user names:", -1, 7, 7, 105, 8
  CONTROL "", IDC_ACELIST, "SysListView32", LVS_REPORT
  PUSHBUTTON "A&dd...", IDC_ACELIST_ADD, 116, 87, 50, 14
  PUSHBUTTON "&Remove", IDC_ACELIST_REMOVE, 170, 87, 50, 14
  LTEXT "Allow", -1, 135, 107, 32, 8, SS_CENTER
  LTEXT "Deny", -1, 176, 107, 32, 8, SS_CENTER
END

STRINGTABLE DISCARDABLE
{
  IDS_PSP_TITLE "Permissions for %1"
}

The first thing to do is to make a copy of the english rc-file, usually called En.rc, and name it after your language. If you do not know the code for your language, take a look at the 2-letter codes in the bottom of ISO-639 (you can also find list of locale names on this MSDN page). Please note that a few files may differ from this list, for example files originally from Wine. So make sure that a translation of your language does not exist before you start to translate it yourself.


When you have copied the file it's just to begin the actual translation.

  • First change - LANG_ENGLISH

A good thing to start with is to change LANG_ENGLISH into your language (Example: LANG_SWEDISH). Depending on your language and location, you might also have to change the Sublang from SUBLANG_NEUTRAL or SUBLANG_DEFAULT.

Now the translation is pretty straight-forward. The words to translate are between quotation marks. However, you should not translate all words in quotation marks, there are some exceptions. But often it's pretty easy to see in the file what to translate and what to not translate. For example you should not translate "MS Shell Dlg" (which is a font, as you can see in the beginning of the line) or "SysListView32".

Save the files as "Plain text", NOT as "Unicode", "UTF-8" or something else!

If some of the fields, labels, etc. is too small for your language, you may resize it.

For example in

PUSHBUTTON "&Some text", IDC_ACELIST_REMOVE, 170, 87, 50, 14

the numbers 170, 87, 50, 14 stand for LEFT, TOP, WIDTH, HEIGHT. So, changing 50 to 60 will result in a longer pushbutton.


In case you are not updating old translations, you will have to edit some more files. In each application, dll, etc folder, there should be a file named either rsrc.rc or <applicationname>.rc. You shall open it and add the path to your language file in it.

Common Characters

Char Comment
& The &-letter which is inside some words above. It defines a hotkey, the letter which comes after the &-letter becomes a hotkey.

A hotkey is a key you can use to fast access different menu's etc. The hotkey is shown with an underline.

% The %-sign is followed by another character like the %1 you see in the rc-file above. This should not be changed as it is usually a text string or a value being printed.
\n This is a linebreak.
/* text */ This is commented text. You may consider leaving the source language text, in order to facilitate future work.

Submit your translation

To submit your translation, please create a patch file for it and file a Bugzilla Bug report for it.

Here is a small step-by-step (for TortoiseSVN) guide for doing this:

  1. Right-click the folder, which contains all files you changed and click on TortoiseSVN --> Create patch.
  2. Make sure that all your changed files are selected in the appearing dialog and then click on OK. Save the result as a ".patch" file.
  3. Go to the ReactOS Bugzilla and click on New. On the next page click on the ReactOS link.
  4. As you most-probably created a translation for the latest ReactOS source code, choose TRUNK from the Version list. From the Component list, choose Patches.
  5. Enter a short description in the Summary text box, for example "German translation for explorer". In the Description text box enter something similar. Then click on the Commit button.
  6. Now return to the created bug report and in the Attachment list, click on Add an attachment.
  7. Choose your ".patch" file in the File text box. In the Description box enter something like "Patch file containing the translations". Be sure to add your mail and real name. Don't forget to check the patch checkbox at Content Type. Then click on Submit to submit your translation.

Terminology

You don't have to translate everything exactly the same as Windows. If you believe you can translate something better than Windows, go on! However you are encouraged to keep common terms, like for example the menus in the windows.

Also, Try to keep your translation consistent, ie try to not translate the same term differently in different places.


Recommendations

  • Proofreading
By having another member of your translation team proofreading all your translations and giving his/her suggestions, the translation will keep a higher quality.
This idea started in the Swedish translation team, and this is how, we in that team handle it:
  1. Someone translates a file and in our case uploads it to our ftp-server.
  2. Another member of the team proofreads the file and give his/her comments.
  3. The original author makes changes accordingly to the comments if he/she agrees with them.
  4. If there is anything the two members don't agree on, we have a vote by all members.
Of course you don't need to follow these steps but some kind of proofreading is highly recommended.
  • A place to meet and chat
Having a place to meet and chat makes the translation a lot easier. A tip is to use or set up an IRC channel on the freenode network and meet there.
  • Another tip for Firefox users
With the Firefox plugin Dictionary Search it is much more faster to translate words you don't know.
You just have to mark them, have a right click on them and press Dictionary search for it.
Dictionary search uses several websites to translate as much languages as possible.