| Home Page | Recent Changes

InsertLocalizedString

About

This macro makes it easy to use localized strings. It will prompt for the localized name and the international value of the localized string, it will then find the place where to declare the localized string. For this you will have to add the following comment in your source file:

//!localization

It will then declare the variable, find the defaultproperties block (create it if it doesn't exist) and add the value to the default properties. finally it will add the variable name to current location.

Before

Note: the | below indicates the current cursor position;

class MyClass extends Object

//!localization

function DoSomething()
{
  BroadcastMessage(|);
}

After

class MyClass extends Object

//!localization
var localized string MyLocalisedString;

function DoSomething()
{
  BroadcastMessage(MyLocalisedString|);
}

defaultproperties
{
  MyLocalisedString="This is my localised string"
}

Code

//
//  InsertLocalizedString - version 1.0
//  by Michiel "El Muerte" Hendriks <elmuerte@drunksnipers.com>
//
// This macro makes it easy to use localized strings. It will prompt for the
// localized name and the international value of the localized string, it will
// then find the place where to declare the localized string. For this you
// will have to add the following comment in your source file:
//      //!localization
// It will then declare the variable, find the defaultproperties block (create
// it if it doesn't exist) and add the value to the default properties. finally
// it will add the variable name to current location.
//

program InsertLocalizedString
begin
    XPos, YPos := CursorXY();

    qres, stringName := InputQuery('Localized string', 'Enter the name of the localized string', '');
    if ((stringName = '') or (qres = false)) then exit;
    stringVal := InputBox('Localized string', 'Enter the international value', '');

    // find "//!localization" entry
    SetCursorXY(1, 1);
    while (CompareText(CurrentLine(), '//!localization') <> 0) do begin
        DoEditorCommand(ecDown);
        tx, ty := CursorXY();
        if (ty >= LineCount()) then begin
            SetCursorXY(XPos, YPos);
            Beep();
            ShowMessage('Error: no //!localization line found');
            exit;
        end;
    end;
    DoEditorCommand(ecDown);
    DoEditorCommand(ecLineStart);

    bHasLocalizedString := false;
    if (CompareText(CurrentWord(), 'var') = 0) then begin
        DoEditorCommand(ecWordRight);
        if (CompareText(CurrentWord(), 'localized') = 0) then begin
            bHasLocalizedString := true;
            DoEditorCommand(ecLineStart);
        end;
    end;
    if (bHasLocalizedString = false) then begin
        DoEditorCommand(ecInsertLine);
        YPos := YPos+1;
        DoEditorCommand(ecAddString, 'var localized string ;');
        DoEditorCommand(ecLineStart);
    end;

    // find ';'
    while (true) do begin
        DoEditorCommand(ecSelWordRight);
        if (pos(';', SelText()) > 0) then break;
        tx, ty := CursorXY();
        if (ty >= LineCount()) then begin
            ShowMessage('Error: ";" not found');
            exit;
        end;
    end;
    DoEditorCommand(ecLeft);
    if (bHasLocalizedString) then DoEditorCommand(ecAddString, ', ');
    tx, ty := CursorXY();
    // insert a newline
    if (tx >= 80) then begin
        DoEditorCommand(ecInsertLine);
        YPos := YPos+1;
        DoEditorCommand(ecDown);
        DoEditorCommand(ecLineStart);
        DoEditorCommand(ecTab);
    end;
    DoEditorCommand(ecAddString, stringName);

    //DoEditorCommand(ecInsertLine);
    //DoEditorCommand(ecAddString, 'var localized string '+stringName+';');

    // find defaultproperties
    while (CompareText(CurrentLine(), 'defaultproperties') <> 0) do begin
        DoEditorCommand(ecDown);
        tx, ty := CursorXY();
        if (ty >= LineCount()) then begin
            DoEditorCommand(ecInsertLine);
            DoEditorCommand(ecDown);
            DoEditorCommand(ecAddString, 'defaultproperties');
            DoEditorCommand(ecLineBreak);
            DoEditorCommand(ecAddString, '{');
            DoEditorCommand(ecLineBreak);
            DoEditorCommand(ecAddString, '}');
            DoEditorCommand(ecUp);
            DoEditorCommand(ecUp);
            break;
        end;
    end;

    // move to end of defaultproperties block
    DoEditorCommand(ecDown);
    DoEditorCommand(ecLineStart);
    DoEditorCommand(ecMatchBracket);
    DoEditorCommand(ecInsertLine);
    DoEditorCommand(ecTab);
    DoEditorCommand(ecAddString, stringName+'="'+stringVal+'"');

    // restore position
    SetCursorXY(XPos, YPos);
    DoEditorCommand(ecAddString, stringName);
end;

Category WOTgreal Macro

The Unreal Engine Documentation Site

Wiki Community

Topic Categories

Recent Changes

Offline Wiki

Unreal Engine

Console Commands

Terminology

FAQs

Help Desk

Mapping Topics

Mapping Lessons

UnrealEd Interface

UnrealScript Topics

UnrealScript Lessons

Making Mods

Class Tree

Modeling Topics

Chongqing Page

Log In