This is an old revision of the document!

WinSCP Translation How to

Advertisement

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. Unless you explicitly forbid me, I’ll provide your email address to other translators of the same language (if any). 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. It needs to be verified for each and every language. Support for bi-directional languages (for example Hebrew and 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 and download INI file with strings to translate.

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 etc. 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 © 2003 Your name’, or whatever you want.

You do not have to translate all strings at once. You may translate several hunderds each turn. Upload, what you have 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.

Advertisement

[Section] Key Meaning/usage
[FileSystemInfo.dfm] …Label6.Caption “Can execute arbitrary command”. Arbitrary means ANY command. With SCP protocol user can execute any command he wants from the console window. With SFTP you cannot do this.
[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. 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 It is used with Norton Commander-style interface only. It is a switch. When it is on, and you enter i.e. ”www“ folder on local panel, same folder is opened on remote panel and vice versa.
[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

When you download ZIP file with translation DLL, unzip it to your WinSCP installation directory. Then start WinSCP. Use ”Languages" button on login dialog to switch to your language. If you cannot see your languge in menu, write me. (Please note that the DLL do not have extension .DLL. The actual extension represents the language code).

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 translation 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.

Advertisement

Last modified: by 195.212.29.163