The following method example reloads extracted translatable strings.
loadTStrings(); constants ExtractDirectory : String = "C:\Temp"; vars line : String; token : String; scm : Schema; loc : Locale; tstr : TranslatableString; fylename : String; fyle : File; count : Integer; offset : Integer; linenum : Integer; src : String; errorCode : Integer; errorOffset : Integer; errorLength : Integer; result : Boolean; begin write ""; fylename := ExtractDirectory & "/" & "TestTstrings-5129.txt"; create fyle transient; fyle.kind := File.Kind_ANSI; fyle.mode := File.Mode_Input; fyle.fileName := fylename; if not fyle.tryOpen() then write "**Could not open file =>" & fylename; return; endif; // First line is gives schema name line := fyle.readLine(); linenum := 1; if line.length() < 11 or line[1:10] <> "---Schema=" then write "**Invalid file format =>" & fylename; return; endif; token := line[11:end]; scm := rootSchema.getSchema(token); if scm = null then write "**Unknown schema =>" & token; return; endif; // Second line gives locale name line := fyle.readLine(); linenum := linenum + 1; if line.length() < 11 or line[1:10] <> "---Locale=" then write "**Invalid file format =>" & fylename; return; endif; offset := 11; token := line.scanUntil("=",offset); loc := scm.getLocaleLocal(token); if loc = null then write "**Unknown locale =>" & scm.name & "::" & token; return; endif; if loc.isClone() then write "**Locale is a clone =>" & scm.name & "::" & loc.name; return; endif; //discard remaining header lines line := fyle.readLine(); linenum := linenum + 1; while line.length() < 8 or line[1:8] <> "-".makeString(8) do if fyle.endOfFile() then write "**Unexpected end of file"; return; endif; line := fyle.readLine(); linenum := linenum + 1; endwhile; beginTransaction; while true do if fyle.endOfFile() then break; endif; src := ""; line := fyle.readLine(); linenum := linenum + 1; while line.length() < 8 or line[1:8] <> "-".makeString(8) do if src = "" then src := line; else src := src & CrLf & line; endif; if fyle.endOfFile() then write "**Unexpected end of file at line " & linenum.String; return; endif; line := fyle.readLine(); linenum := linenum + 1; endwhile; src := src.trimBlanks(); if src = "" then write "**Empty definition before line " & linenum.String; return; endif; // Get TString name offset := 1; token := src.scanWhile( "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_", offset); if token = "" or token.length > 30 or token[1] < "A" or token[1] > "Z" then write "**Invalid TString name before line " & linenum.String & " =>" & src; return; endif; tstr := loc.getTranslatableStringLocal(token); if tstr = null then write "**Unknown TString name before line " & linenum.String & " =>" & src; return; endif; result := tstr.updateCompile( src, errorCode, errorOffset, errorLength); if result then write "**Error in TString before line " & linenum.String & " =>" & src; write "**Error " & errorCode.String & "=" & process.getErrorText(errorCode) & "; offset=" & errorOffset.String; return; endif; count := count + 1; endwhile; commitTransaction; write "Loaded " & count.String & " from " & fylename; epilog if process.isInTransactionState() then write "**aborting transaction"; abortTransaction; endif; delete fyle; end;