I want to present you the new version of my language changer for League of Legends. With it you can use any language you want on any server you want. Even Korean
Optimized for 4.21!
Download:
32bit: 3.38mb


Code:
Downloadlinks: (to copy or check virustotal by yourself) http://www.smoothdev.org/tools/lol/languageChanger/download/LoLLanguageChanger.exe
Code:
unit MainForm;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Generics.Collections, Vcl.StdCtrls,
Vcl.CheckLst, Vcl.ComCtrls, Vcl.ExtCtrls, IdBaseComponent, IdComponent,
IdTCPConnection, IdTCPClient, IdHTTP, ShellApi;
type
TServerSettings = class
private
public
Server : string;
Languages : TStringList;
end;
TForm1 = class(TForm)
Label1: TLabel;
Label2: TLabel;
lbl1: TLabel;
lbl2: TLabel;
grp1: TGroupBox;
lstServerList: TListBox;
chklstLanguageList: TCheckListBox;
btn1: TButton;
btn2: TButton;
HeaderControl1: THeaderControl;
lbl3: TLabel;
lbl4: TLabel;
lbl5: TLabel;
lbl6: TLabel;
lblani: TLabel;
tmr1: TTimer;
idhtp1: TIdHTTP;
stat1: TStatusBar;
lbl7: TLabel;
lbl8: TLabel;
lbl9: TLabel;
lbl10: TLabel;
opendialog: TFileOpenDialog;
procedure FormCreate(Sender: TObject);
procedure tmr1Timer(Sender: TObject);
procedure lbl6Click(Sender: TObject);
procedure idhtp1WorkEnd(ASender: TObject; AWorkMode: TWorkMode);
procedure idhtp1WorkBegin(ASender: TObject; AWorkMode: TWorkMode;
AWorkCountMax: Int64);
procedure lstServerListClick(Sender: TObject);
procedure btn1Click(Sender: TObject);
procedure chklstLanguageListClick(Sender: TObject);
procedure btn2Click(Sender: TObject);
procedure lbl9Click(Sender: TObject);
procedure lbl7Click(Sender: TObject);
private
{ Private-Deklarationen }
FSettings : TObjectList<TServerSettings>;
procedure FSetSettings(value : TObjectList<TServerSettings>);
public
{ Public-Deklarationen }
Dir : string;
FilePath : string;
procedure CheckFilePath;
function ParseFile(Path : string) : TObjectList<TServerSettings>;
function Parse(list : TStringList) : TObjectList<TServerSettings>;
procedure SetLanguages(s : TServerSettings);
procedure SaveAs(path : string);
property settings : TObjectList<TServerSettings> read FSettings write FSetSettings;
end;
const
Version = '2.0';
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.btn1Click(Sender: TObject);
begin
SaveAs(dir + filepath);
ShowMessage('Language settings successfully changed.');
end;
procedure TForm1.btn2Click(Sender: TObject);
var
default : TStringList;
begin
default := TStringList.Create;
default.Add('na,na,en_US,A');
default.Add('br,br,pt_BR,A');
default.Add('tr,tr,tr_TR,A');
default.Add('euw,euw,en_GB|de_DE|es_ES|fr_FR|it_IT,A');
default.Add('eune,eune,en_GB|cs_CZ|el_GR|hu_HU|pl_PL|ro_RO,A');
default.Add('ru,ru,ru_RU,A');
default.Add('la1,la1,es_MX,A');
default.Add('la2,la2,es_MX,A');
default.Add('oc1,oc1,en_AU,A');
settings := Parse(default);
SetLanguages(settings[lstServerList.ItemIndex]);
end;
procedure TForm1.CheckFilePath;
var
SelectedFolder: string;
begin
if not(FileExists(dir + FilePath)) then
begin
opendialog.Options := opendialog.Options + [fdoPickFolders];
if opendialog.Execute then
begin
dir := OpenDialog.FileName + '\\';
CheckFilePath;
end
else
Application.Terminate;
end
else
begin
lbl2.Caption := 'Found';
lbl2.Font.Color := clGreen;
end;
end;
procedure TForm1.chklstLanguageListClick(Sender: TObject);
var
c: Integer;
l : string;
begin
Settings[lstServerList.ItemIndex].Languages.Clear;
for c := 0 to chklstLanguageList.Count - 1 do
begin
if chklstLanguageList.Checked[c] then
begin
case c of
0: l := 'en_US';
1: l := 'de_DE';
2: l := 'fr_FR';
3: l := 'es_ES';
4: l := 'it_IT';
5: l := 'ru_RU';
6: l := 'tr_TR';
7: l := 'ko_KR';
8: l := 'pl_PL';
9: l := 'el_GR';
10: l := 'ro_RO';
11: l := 'cs_CZ';
12: l := 'hu_HU';
13: l := 'pt_BR';
end;
Settings[lstServerList.ItemIndex].Languages.Add(l)
end;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Dir := 'C:\Riot Games\';
FilePath := 'League of Legends\RADS\projects\lol_patcher\managedfiles\0.0.0.0\regions.txt';
CheckFilePath;
settings := ParseFile(Dir + FilePath);
lstServerList.ItemIndex := 0;
lstServerList.OnClick(self);
end;
procedure TForm1.FSetSettings(value: TObjectList<TServerSettings>);
var
s : TServerSettings;
begin
FSettings := value;
end;
procedure TForm1.idhtp1WorkBegin(ASender: TObject; AWorkMode: TWorkMode;
AWorkCountMax: Int64);
begin
tmr1.Enabled := true;
end;
procedure TForm1.idhtp1WorkEnd(ASender: TObject; AWorkMode: TWorkMode);
begin
tmr1.Enabled := false;
end;
procedure TForm1.lbl6Click(Sender: TObject);
var
cV : string;
cL : string;
r : integer;
ms : TMemoryStream;
begin
cV := idhtp1.Get('http://www.smoothdev.org/tools/lol/languageChanger/currentVersion');
if cv <> Version then
begin
r := MessageDlg('You are not up-to-date!' + #13#10 + #13#10 +
'Your Version: ' + Version + #13#10 +
'Newest Version: ' + cV + #13#10 + #13#10 +
'Do you want to download it?'
,mtWarning, mbOKCancel, 0);
if r = 1 then
begin
cL := idhtp1.Get('http://www.smoothdev.org/tools/lol/languageChanger/currentLink');
ShellExecute(self.WindowHandle,'open',PChar(cL),nil,nil, SW_SHOWNORMAL);
end;
end
else
ShowMessage('You are up-to-date.');
end;
procedure TForm1.lbl7Click(Sender: TObject);
begin
ShellExecute(self.WindowHandle,'open','http://www.smoothdev.org/donate/',nil,nil, SW_SHOWNORMAL);
end;
procedure TForm1.lbl9Click(Sender: TObject);
begin
ShellExecute(self.WindowHandle,'open','http://www.smoothdev.org/tools/',nil,nil, SW_SHOWNORMAL);
end;
procedure TForm1.lstServerListClick(Sender: TObject);
begin
SetLanguages(settings[lstServerList.ItemIndex]);
end;
procedure Split(Delimiter: Char; Str: string; ListOfStrings: TStrings) ;
begin
ListOfStrings.Clear;
ListOfStrings.Delimiter := Delimiter;
ListOfStrings.DelimitedText := Str;
end;
function TForm1.Parse(list: TStringList): TObjectList<TServerSettings>;
var
setting : TServerSettings;
str, str2 : string;
parts, langs: TStringList;
begin
Result := TObjectList<TServerSettings>.Create;
for str in list do
begin
if Length(str) >= 5 then
begin
parts := TStringList.Create;
langs := TStringList.Create;
setting := TServerSettings.Create;
str2 := StringReplace(str, ' ', '',
[rfReplaceAll, rfIgnoreCase]);
Split(',',str2,parts);
Split('|',parts[2],langs);
setting.Server := parts[0];
setting.Languages := langs;
Result.Add(setting);
end;
end;
end;
function TForm1.ParseFile(Path: string): TObjectList<TServerSettings>;
var
list : TStringList;
begin
list := TStringList.Create;
list.LoadFromFile(Path);
Result := Parse(list);
end;
procedure TForm1.SaveAs(path: string);
var
s : TServerSettings;
l : string;
op : TStringList;
str : string;
begin
op := TStringList.Create;
for s in settings do
begin
str := s.Server + ',' + s.Server + ',';
for l in s.Languages do
begin
str := str + l + '|';
end;
Delete(str,Length(str),1);
str := str + ',A';
op.Add(str);
end;
op.SaveToFile(path);
end;
procedure TForm1.SetLanguages(s: TServerSettings);
var
lang : string;
id : integer;
begin
chklstLanguageList.CheckAll(cbUnchecked, true, false);
for lang in s.Languages do
begin
if (lang = 'en_US') or (lang = 'en_AU') or (lang = 'en_GB') then
id := 0
else if lang = 'de_DE' then
id := 1
else if lang = 'fr_FR' then
id := 2
else if (lang = 'es_ES') or (lang = 'es_MX') then
id := 3
else if lang = 'it_IT' then
id := 4
else if lang = 'ru_RU' then
id := 5
else if lang = 'tr_TR' then
id := 6
else if lang = 'ko_KR' then
id := 7
else if lang = 'pl_PL' then
id := 8
else if lang = 'el_GR' then
id := 9
else if lang = 'ro_RO' then
id := 10
else if lang = 'cs_CZ' then
id := 11
else if lang = 'hu_HU' then
id := 12
else if lang = 'pt_BR' then
id := 13;
chklstLanguageList.Checked[id] := true;
end;
end;
procedure TForm1.tmr1Timer(Sender: TObject);
begin
if lblani.Caption = '. . .' then
lblani.Caption := ''
else
if lblani.Caption = '. .' then
lblani.Caption := '. . .'
else
if lblani.Caption = '.' then
lblani.Caption := '. .'
else
if lblani.Caption = '' then
lblani.Caption := '.';
end;
end.
I hope you can use the Lanugage Changer
If you have any problems or questions, just ask.
Donate
This tool is for free!
But we take voluntary donations on this site:
Greetings from switzerland






