v4.2
Looks up a string in the specified Softimage dictionary and returns the corresponding
string in the other language.
Softimage has a concept of a translation dictionary, which is a table of strings that
have been translated from English into one or more other languages. Each translation
dictionary is represented by a file in the factory/Application/Dictionary/en
directory, with a .dict extension. When one of these dictionaries is translated into
another language, a file with the same name is created in a directory named after
the language. For example japanese translations are stored in the jp directory.
Each string can be referenced by its numeric ID or by providing the English
version of the string.
Often a string needs to contain data that is very specific to the circumstance.
For example if an error message was "File c:\temp\myfile.txt not found" then it
would be impossible to translate every possible filename in the dictionary. In
these cases the dictionary may use the %s token which represents a placeholder for
up to three strings that you supply (via the String1, String2, and String3 arguments).
The number of %s tokens must exactly match the number of optional strings provided,
up to a maximum of three. Other format tokens like %d are not supported and could
result in a crash if they are present.
For example, instead of using "File c:\temp\myfile.txt not found", the dictionary string
should take the format "File %s not found" so that when Translate method is called, the
filename is specified using the String1 argument (see the 'warningMsg' example below).
String XSIUtils.Translate( Object in_ToTranslate, String in_Dictionary, String in_string1, String in_string2, String in_string3 ); |
oString = XSIUtils.Translate( Key, Dictionary, [String1], [String2], [String3] ); |
Parameter | Type | Description |
---|---|---|
Key | String or Integer |
When a string is passed the English dictionary is searched
to find the exact match and, if found, the equivalent in the
current language dictionary is returned.
If the string is not found then the provided string is returned.
If the current language is English then it will always return
whatever string was passed. It is also possible to provide the numeric id of the string in the dictionary. In this case it will go directly to the dictionary of the current language and attempt to find the string. If it does not find a string by that ID an empty string is returned. |
Dictionary | String | Name of the dictionary to search. Dictionary names match the filename without the .dict extension. |
String1 | String | Optional argument to match the first %s in the string in the dictionary. |
String2 | String | Optional argument to match the second %s in the string in the dictionary. |
String3 | String | Optional argument to match the third %s in the string in the dictionary. |
// Demonstration of XSIUtils.Translate currentLang = GetValue("Preferences.General.language") ; Application.LogMessage( "The current language is " + currentLang ) ; // You can't translate any arbitrary string, only // ones that are already in the dictionary. pixelRatio = XSIUtils.Translate( "Pixel Ratio", "XSIXSI" ) ; Application.LogMessage( "Pixel Ratio translated is " + pixelRatio ) ; // Load a Softimage warning message, in English // it says "Do you want to remove it?" errorMsg = XSIUtils.Translate( 333, "XSIMSGCAT" ) ; XSIUIToolkit.MsgBox( errorMsg ) ; // This is an error message that contains additional // context information // Dictionary contains: "31$Path %s has been changed to %s" // Resulting string is: // WARNING : 31$Path C:\out.txt has been changed to C:\temp\out.txt warningMsg = XSIUtils.Translate(32, "XSIMSGCAT", "C:\\out.txt", "C:\\temp\\out.txt" ); Application.LogMessage( warningMsg, siWarning ) ; |