This is an old revision of the document!
WinSCP Translation How to
Advertisement
Translating Application
How to Start with Translation?
When you want to start with translation, contact me. Send me your name, contact email address and language you want to work on. Also specify, whether you want your email address to be published on translations page. Optionally I may display your URL instead of an email. Note that I can provide your email address to other translators of the same language (if any) without explicitly asking. In case your language does not use western Latin-1 character set (1252), write me also Windows (not ISO) code of the set.
Note that support for multi-byte character sets is limited (Japanese, Chinese). It needs to be verified for each and every language. Support for bi-directional languages (Hebrew, Arabic) is tested.
In case I need your help (the language is either not being translated at all or there is still lot of work to do on it or the translation is abanoned and I need maintainer for it), I’ll create a translator account for you. An username is always your e-mail address.
How to Translate?
Once you have a translator account, you may login to translation web-interface. There select your language. Before you will be also to download INI file with strings to translate, you may need to press Update button. If the INI file for the language does not exists yet, it will be created. If it already exists, it will get updated, in case it does not contain all strings from the most recent version yet. This can happen if the last translator abanoned the translation while ago. You may need to press Update button also with every new release.
Format of the file is like INI file, example:
; file comment [file] ; "original english string" key="translated string" ; "original english string2" key2="translated string2"
Advertisement
Where file is either form (dialog) definition (.dfm
extension), resource strings file (.rc
extension) or strings for setup application (.isl
extension). Key should give you some idea about purpose of the string. For form definitions it is context and the name of component using the string. The strings that need to be translated have keyword <translate>
in place of “translated string” (initially all strings).
Example:
[Login.dfm] MainPanel.PageControl.ScpSheet.ShellGroup.Caption="Shell"
The “Shell” is title (caption) of shell group box on SCP tab of Login dialog.
There are two special sections. [default.isl]
contains general strings for setup application (Inno Setup). The application is already translated to several languages. If your language is among them, I’ll copy the translation to this section. Please check for typos and other mistakes in the section.
[Obsolete strings]
section contains translated strings that are no longer used in the latest version of application. Also when I need to significantly change original english string, I try to change the string key as well, if possible. In this case your translation will move to [Obsolete strings]
with next update. This forces you to update the string translation. You may reuse original translation from obsolete section, if appropriate. Then you may safely remove whole section.
Some strings contain parameter placeholders like %s
or %d
. These are replaced by actual value on run-time. Make sure that you keep the same order as in english string. I know it can be sometime difficult, because some languages have different word-ordering, but it have to be so. Also translated string should have approximately same length as original string. This applies mainly for strings that appear on dialogs. The error messages etc, might be usually as long as necessary.
Some strings use &
character to mark accelerator character (the one after &
). When user presses Alt-X
, where X
is the accelerator character, associated control (button, edit box, menu, etc.) receives focus (cursor moves to it, etc.). The accelerator character should be unique on each screen (window). It is also difficult to maitain this, as the dialogs use often strings from different sources. So you’ll probably succeed with this after several tries.
Also please, if you encounter strange sequence like #13#10
, include it in translation too. For such strings I recommend you to copy the English one and replace the words only, keep the “strange” patterns. Avoid ever using double quotes (“
), use always single-quotes (’
), in this just follow the way the original english string is written. Double quotes are used to mark begin and end of the string.
In section [TextsWin1.rc]
, the first string has key TRANSLATOR_INFO
. This string will appear on About dialog. You may enter there anything you want. Like ”Transation © 2005 Your name“, or whatever you want.
You do not have to translate all strings at once. You may translate several hundreds each turn. Upload, what you have done to translation web-interface. I’ll do regular updates of translation DLLs.
Explanation of Some String Meaning
Here I provide explanation of some string meaning (and/or usage), where it may not be not obvious. I will expand the list each time someone asks. You also add your experiences youself.
Advertisement
[Section] | Key Meaning/usage |
---|---|
[FileSystemInfo.dfm] …Label6.Caption |
“Can execute arbitrary command”. Arbitrary means ANY command. With WinSCP user can execute any remote command he wants from the console window. |
[FileSystemInfo.dfm] …Label9.Caption |
”Native text (ASCII) mode transfers“. Native means that the protocol has its own support for text mode transfers. This is true only for SFTP protocol version 4 and newer. For SCP and other SFTP versions, WinSCP only simulates the text transfers. |
[Login.dfm] …ProxyLocalhostCheck.Caption |
It means ”Do use proxy even for localhost“, not ”Don’t use proxy for localhost“. |
[Login.dfm] …PingDummyCommandButton.Caption |
By dummy I mean command that does in fact nothing (or at least it does not change anything). For SCP I do echo something , for SFTP I get properties of root directory. |
[NonVisual.dfm] …SynchorizeBrowsingAction.Caption |
Read documentation |
[NonVisual.dfm] …AuthTISCheck.Caption |
Attempt TIS or CryptoCard authentication |
[TextsCore1.rc] DETECT_RETURNVAR_ERROR |
WinSCP in SCP mode tries to detect first, if in current user shell $? or $status variable contain result of the last command. |
[TextsCore1.rc] SFTP_SERVER_MESSAGE_ UNSUPPORTED |
It is used for ”Error message from server“ in SFTP_ERROR_FORMAT , when SFTP cannot provide one. |
[TextsCore1.rc] CIPHER_BELOW_TRESHOLD, CIPHER_TYPE_CS, CIPHER_TYPE_SC |
%s in %scipher of CIPHER_BELOW_TRESHOLD is replaced either with empty string or by value of CIPHER_TYPE_CS or CIPHER_TYPE_SC . Both replacements should have a space at the end, if appropriate for particular language. |
[TextsWin1.rc] MUTEX_RELEASE_TIMEOUT, DRAGEXT_MUTEX_RELEASE_TIMEOUT |
Mutex is technical term standing for ”MUTual EXclusive“. I believe that it does not translate to most of the languages. |
How to Use Translation DLL
Read documentation.
How to Use Translation Web-interface
Each page includes description of its features. If you consider it to be insufficient, let me know, I’ll improve it.
CVS
Translations are stored on project CVS as well. CVS is updated in regular intervals (every few hours).
Project CVS can be accessed anonymously. To checkout whole translations
module use following command (press Enter
if you are prompted for password):
cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/winscp co translations
There is also web-based CVS viewer. It is delayed after primary CVS server.
More information about CVS is provided on project page.
Translating Introduction Page
In addition to translating appplication itself you are welcome to prepare localised introduction page for WinSCP documentation.
Advertisement
For a start there is simple template (in English) covering the very basic information about WinSCP. However you are welcome to go more into details. Also if you know of or maintain personally site in your language about WinSCP, you are welcome to link it.
To create the translated introduction page type URL http://winscp.net/eng/docs/lang:<lang>
where <lang>
is your language ID (i.e. extension of the translation DLL) and press Create this page button on the right. To start you may copy source of the template page (open it, press Edit this page and copy the content), but remove the NOINDEX
directive (prevents search engines indexing the template).
You may want to create account for wiki first to get credit for your contribution. Wiki authentication is linked to support forum, so in fact you need to register on the forum.
Once you create the localized version I’ll give it shortcut address in form http://winscp.net/<lang>/
and add the ”flag" link to the page header. Also address http://winscp.net/
will automatically redirect to the localized page, if browser/visitor has the respective language set as preferred.