Differences
This shows you the differences between the selected revisions of the page.
translation_admin 2005-11-20 | translation_admin 2022-05-02 (current) | ||
Line 1: | Line 1: | ||
- | ====== WinSCP Translation How to ====== | + | ====== WinSCP Translation How To ====== |
- | ===== Translating The Application ===== | + | ===== Translating the Application ===== |
- | When you want to start a translation, [[&url(contactme)|contact me]]. Send me your name, contact email address and the language you want to work on. Also specify, whether you want your email address to be published on the translations page. Optionally I may display your URL instead of your email. Note that I may provide your email address to other translators of the same language (if any) without explicitly asking you. In case your language does not use the western Latin-1 character set (1252), write me also Windows (not ISO) code of the set. | + | When you want to start translating WinSCP, please [[&forum/viewforum.php?f=9|contact us on the Translation forum]]. Before posting, [[this>../../forum/profile.php?mode=register|register on the forum]], using an email address you want us to use to communicate with you. Post to the topic of the language you want to work on (start a new topic, if your language is not listed yet). Do not forget to post your full name. Thanks! |
- | 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) has been tested. | + | If we need a help with the translation, we will create a [[this>../transladmin.php|translator account]] for you. Your username is always your e-mail address. |
- | If 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 a maintainer for it), I'll create a [[this>../transladmin.php|translator account]] for you. Your username is always your e-mail address. | + | Note that we may provide your email address to other translators of the same language (if any) without explicitly asking you. |
- | ==== How Do I Translate? ==== | + | ==== Translation File ==== |
- | Once you have a translator account, you may login to the translation web-interface. Once there, select your language. Before you can download the INI file with the strings to translate, you may need to press the //Update// button. If the INI file for the language does not exist yet, it will be created. If it already exists, it will be updated, in the case that it doesnt contain all the strings from the most recent version yet. This can happen if the last translator abandoned the translation a while ago. You may need to press the //Update// button with every new release. | + | Once you have a translator account, you may log in to the [[this>../transladmin.php|translation web-interface]]. Once there, download a file with the strings to translate. |
- | Format of the file is like the INI file, for example: | + | A format of the file is like an INI file, for example: |
- | <code> | + | <code ini> |
- | ; file comment | + | ; File comment |
- | [file] | + | [File] |
- | ; "original english string" | + | ; "Original English string" |
- | key="translated string" | + | Key="Translated string" |
- | ; "original english string2" | + | ; "Original English string 2" |
- | key2="translated string2" | + | Key2="Translated string 2" |
</code> | </code> | ||
- | Where the file is either a form (dialog) definition (''.dfm'' extension), a resource strings file (''.rc'' extension) or strings for [[installation|setup application]] (''.isl'' extension). The key should give you some idea about the purpose of the string. For the form definitions it is a context and the name of a component using the string. The strings that need to be translated have the keyword ''<translate>'' in stead of "translated string" (initially all strings). | + | Where the ''File'' is either a form/window/dialog definition (a ''.dfm'' extension), a resource strings file (a ''.rc'' extension) or strings for [[ui_installer|setup application]] (a ''.isl'' extension). The key should give you some idea about the purpose of the string. For form definitions, it is a context and the name of the component using the string. |
Example: | Example: | ||
- | <code> | + | <code ini> |
- | [Login.dfm] | + | [SiteAdvanced.dfm] |
- | MainPanel.PageControl.ScpSheet.ShellGroup.Caption="Shell" | + | MainPanel.PageControl.ScpSheet.ShellGroup.<nohilite>Caption</nohilite>="Shell" |
</code> | </code> | ||
- | The "Shell" is the title (caption) of the shell group box on //[[ui_login_scp|SCP tab]]// of Login dialog. | + | The //"Shell"// is the title (caption) of the "shell" group box on //[[ui_login_scp|SCP/Shell page]]// of Advanced Site Settings dialog. |
- | There are two special sections: ''[default.isl]'' contains general strings for the setup application ([[&url(innosetup)|Inno Setup]]). The application has already been translated to [[&url(innosetuptransl)|several languages]]. If your language is among them, I'll copy the translation to this section. Please check for typos and other mistakes in this section. | + | The strings that need to be translated are marked with ''<translate>'' keyword in place of "Translated string" (initially all strings are marked this way). |
- | The ''[Obsolete strings]'' section contains translated strings that are no longer used in the latest version of the application. Also when I need to significantly change the 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 the next update. This forces you to update the string translation. You may reuse the original translation from an obsolete section, if appropriate. Then you may safely remove the whole section. | + | Use UTF-8 encoding when editing the INI file. |
- | Some strings contain parameter placeholders like ''%s'' or ''%d''. These are replaced by the actual value at run-time. Make sure that you keep the same order as in the english string. I know it can be difficult sometimes, because some languages have different word-orders, but it has to be so. Also translated strings should have approximately the same length as the original string. This applies mainly for strings that appear on dialogs. The error messages etc, might be usually as long as necessary. | + | You do not have to translate all the strings at once. You may translate them in any number of steps. Upload, what you have done so far, to [[this>../transladmin.php|translation web-interface]]. An uploaded translation is compiled into [[languages|translation DLL]] automatically and it is made promptly available for a download. |
- | Some strings use the ''&'' character to mark the accelerator character (the one after ''&''). When the user presses ''Alt-X'', where ''X'' is the accelerator character, the associated control (button, edit box, menu, etc.) receives the focus (cursor moves to it, etc.). The accelerator character should be unique for each screen (window). It can be difficult to maintain this also, as the dialogs often use strings from different sources. So you'll probably require several attempts to get it right. | + | ==== Translation Strings ==== |
- | Also, please, if you encounter strange sequences like ''#13#10'', include it in the translation too. For these strings I recommend that you to copy the English one and replace the words only, keeping the "strange" patterns. Please never use double quotes (''"''), use always single-quotes ('''''), following the way the original english string is written. Double quotes are used to mark the beginning and the end of the string. | + | Translation strings use C-style string syntax. Double quotes are used to delimit the strings. Double quotes, line breaks and backslashes in strings need to be escaped using a |
+ | backslash -- ''\"'', ''\n'' or ''\r\n'' and ''\\'' respectively. All other characters should be used literally. | ||
- | In section ''[TextsWin1.rc]'', the first string has the key ''TRANSLATOR_INFO''. This string will appear on the [[ui_about|About dialog]]. You may include there anything you want. Such as, "Transation (c) 2005 Your name", or anything else. | + | Some strings contain parameter placeholders like ''%s'' or ''%d''. These are replaced by an actual value at run-time. Make sure that you keep the same order of placeholders as in the original English string. We know that it can be difficult sometimes, because some languages have different word order, but it has to be so. |
- | You do not have to translate all the strings at once. You may translate several hundreds each time. Upload, what you have done so far to [[this>../transladmin.php|translation web-interface]]. I'll do regular updates of the translation DLLs. | + | Make sure that translations of window control labels fit into the limited space available on the window. On the contrary, (error) messages might be usually as long as needed. |
- | ==== Explanation of The Meaning Of Some Strings ==== | + | Some strings use the ''&'' character to mark the accelerator character (the one after ''&''). When the user presses ''Alt+X'', where ''X'' is the accelerator character, the associated control (button, edit box, menu, etc.) receives the focus (cursor moves to it, etc.). The accelerator character should be unique for each screen (window). It can be difficult to achieve, as dialogs often use strings from different sources. You'll probably need several attempts to get it right. |
- | Here I provide an explanation of the meanings of some strings (and/or usage), where it may not be obvious. I will expand the list each time someone asks. You can also add your own knowledge. | + | |
- | ^ [Section] ^ Key Meaning/usage ^ | + | ==== [[special_sections]] Special Sections ==== |
- | | ''[FileSystemInfo.dfm] ...Label6.Caption'' | [[protocols|"Can execute arbitrary command"]]. Arbitrary means ANY command. With WinSCP user can execute any [[remote_command|remote command]] he or she wants from the [[ui_console|console window]]. | | + | |
- | | ''[FileSystemInfo.dfm] ...Label9.Caption'' | "Native text (ASCII) mode transfers". Native means that the protocol has its own support for [[transfer_mode|text mode transfers]]. This is true only for SFTP protocol version 4 and more recent. For SCP and other SFTP versions, WinSCP merely simulates the text transfers. | | + | |
- | | ''[Login.dfm] ...ProxyLocalhostCheck.Caption'' | This means "use the proxy even for the localhost", not "Don't use proxy for localhost". | | + | |
- | | ''[Login.dfm] ...PingDummyCommandButton.Caption'' | By dummy I mean a command that does in fact nothing (or at least it does not change anything). For SCP I do ''echo something'', for SFTP I get the properties of the root directory. | | + | |
- | | ''[NonVisual.dfm] ...SynchorizeBrowsingAction.Caption'' | Read [[task_navigate#synchronize_browsing|documentation]] | | + | |
- | | ''[NonVisual.dfm] ...AuthTISCheck.Caption'' | [[&url(puttytis)|Attempt TIS or CryptoCard authentication]] | | + | |
- | | ''[TextsCore1.rc] DETECT_RETURNVAR_ERROR'' | WinSCP in SCP mode first tries to detect if, in the current user shell ''$?'' or ''$status'' variable contains the result of the last command. | | + | |
- | | ''[TextsCore1.rc] SFTP_SERVER_MESSAGE_ UNSUPPORTED'' | This 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 the majority of the languages. | | + | |
- | ==== How to Use Translation DLL ==== | + | Section ''[default.isl]'' contains general strings for the setup application ([[&url(innosetup)|Inno Setup]]), which is used to implement WinSCP installer. Inno Setup has already been translated to [[https://jrsoftware.org/files/istrans/|many languages]]. If your language is among them, we will copy Inno Setup translation to this section. If you disagree with the official translation, please discuss it with Inno Setup translator, rather than modifying its copy in WinSCP translation. |
+ | |||
+ | In section ''[TextsWin1.rc]'', the first two strings have the keys ''TRANSLATOR_INFO2'' and ''TRANSLATOR_URL''. They will appear on the [[ui_about|About dialog]]. You may include there anything you want. Such as, //"Translation (c) 2022 Your name"//, or anything else. For the URL, you can use both an HTTP URL and an e-mail address. | ||
+ | |||
+ | ==== [[testing]] Testing Your Translation ==== | ||
+ | |||
+ | You can generate [[languages|translation DLL]] on your own to test the translation before uploading it. For that, download "Translator" tool from [[this>../transladmin.php|translation web-interface]]. Extract the downloaded ZIP file file and follow instructions in the contained ''readme.txt'' file. | ||
+ | |||
+ | ==== [[using_dll]] How to Use Translation DLL ==== | ||
Read [[languages|documentation]]. | Read [[languages|documentation]]. | ||
- | ==== How to Use The Translation Web-interface ==== | + | ==== [[git]] Git ==== |
- | Each page includes a description of its own features. If you consider this to be insufficient, please let me know and I'll improve it. | + | Translations are also stored on the [[https://github.com/winscp/winscp/tree/translations/translations|project Git repository on GitHub]]. The repository is updated once a day. |
- | ==== CVS ==== | + | Use Git only to access historical translations. To download the current translation, always use [[this>../transladmin.php|translation web-interface]]. The web-interface updates the most recent translation (as stored on in the repository) on-the-fly to the last WinSCP version, e.g. it adds new strings to translate (that did not exist, when the translation was updated the last time), removes obsolete strings, etc. |
- | Translations are also stored on the project CVS. CVS is updated in regular intervals (every few hours). | + | |
- | The Project CVS can be accessed anonymously. To checkout the whole ''translations'' module use following command (press ''Enter'' if you are prompted for password): | + | By default, your changes to translations are committed to Git repository under your name, but with a generic email address (''translator@winscp.net''). If you want to have your changes associated with your real email address/GitHub account, let us know. |
- | <code> | + | ===== [[doc]] Translating the Introduction Page ===== |
- | cvs -z3 -d:pserver:anonymous@cvs.sourceforge.net:/cvsroot/winscp co translations | + | In addition to translating the application itself, you are welcome to prepare a localized introduction page for the WinSCP documentation. |
- | </code> | + | |
+ | For a start, there is a [[lang:template|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 a site in your language about WinSCP, you are welcome to link it. | ||
+ | |||
+ | To create a translated introduction page, type URL ''%%https://winscp.net/eng/docs/lang:<lang>%%'' into your browser, where ''<lang>'' is your language ID (i.e. the extension of the translation DLL) and press the //Create this page// button on the right. | ||
- | There is also a [[&url(cvswebtransl)|web-based CVS viewer]]. It is on a delay with respect to the primary CVS server.· | + | Do not add another localized pages apart from the introduction one. |
- | More information about CVS is provided on the [[&url(cvsproject)|project page]]. | + | To start, you may copy the source of the [[lang:template|template page]] (open it, press //Edit this page// and copy the content). Though, remove the ''NOINDEX'' directive (which prevents search engines indexing the template) and all footnotes (in double round-brackets). |
- | ===== [[doc]] Translating The Introduction Page ===== | + | Before editing, login to the wiki using your [[this>../../forum/|WinSCP forum account]]. This way, you receive some credit for your contributions. Also, we will be able to recognize your edits from wiki vandalism. |
- | In addition to translating the appplication itself you are welcome to prepare a localised introduction page for the WinSCP documentation. | + | |
- | For a start there is [[lang:template|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 a site in your language about WinSCP, you are welcome to link it. | + | You will receive a notification, whenever the localized page is changed (be it by us or a random visitor). |
- | To create the translated introduction page type URL ''%%http://winscp.net/eng/docs/lang:<lang>%%'' | + | As the last step, add your language name (local name, not in English) to a [[lang:name|list]], to give us a hint about an entry for the language in the website language menu. |
- | where ''<lang>'' is your language ID (i.e. extension of the translation DLL) and press the //Create this page// button on the right. | + | |
- | To start you may copy the source of the [[lang:template|template page]] (open it, press //Edit this page// and copy the content). But remove the ''NOINDEX'' directive (which prevents search engines indexing the template) and all footnotes (in double round-brackets). | + | Once you have created the localized version, we will give it a shortcut address in a form ''%%https://winscp.net/<lang>/%%''; and we will add an entry to the website language menu. The address ''https://winscp.net/'' will automatically redirect to the localized page, if a browser/visitor has the corresponding language set as the preferred one. |
- | I believe that [[http://wiki.splitbrain.org/|DokuWiki]] supports UTF-8 correctly so you should not have any problems using a particular language. | + | If we do not do so, it may be because your translation does not qualify for public usage yet due to some shortcomings; and we had have no means to contact you, because you have not registered. In such case, please post a message on [[this>../../forum/|support forum]]. |
- | Before editing, create an account for the wiki. Firstly, you will receive some credit for your contributions. Secondly, I will be able to recognise your edits from wiki vandalism. Wiki authentication is linked to [[this>../../forum/|support forum]], so in fact you need to [[this>../../forum/profile.php?mode=register|register on the forum]]. | + | ===== [[rank]] Forum Rank ===== |
+ | We will tag your forum account as //"Translator"// to highlight it in the threads. | ||
- | As a last step add your language (local name, not in English) to a [[lang:name|list]] to give me a hint about the title of the language icon (flag). | + | ===== Automatic Updates ===== |
- | Once you have created the localized version I'll give it a shortcut address in the 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 corresponding language set as preferred. | + | As a translator, you are entitled to [[updates#automatic_upgrade|automatic application updates]]. To enable automatic updates, enter your translator account username/email in [[ui_pref_updates|WinSCP preferences]]. |