aboutsummaryrefslogtreecommitdiffstats
path: root/unicode/src/base/ULanguage.pas
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--unicode/src/base/ULanguage.pas31
1 files changed, 18 insertions, 13 deletions
diff --git a/unicode/src/base/ULanguage.pas b/unicode/src/base/ULanguage.pas
index 9571358e..88b6647f 100644
--- a/unicode/src/base/ULanguage.pas
+++ b/unicode/src/base/ULanguage.pas
@@ -79,6 +79,8 @@ uses
Classes,
SysUtils,
ULog,
+ UPath,
+ UFilesystem,
UPathUtils;
{**
@@ -129,23 +131,26 @@ end;
*}
procedure TLanguage.LoadList;
var
- SR: TSearchRec; // for parsing directory
+ Iter: IFileIterator;
+ IniInfo: TFileInfo;
+ LangName: string;
begin
SetLength(List, 0);
SetLength(ILanguage, 0);
- if FindFirst(LanguagesPath + '*.ini', 0, SR) = 0 then
+ Iter := FileSystem.FileFind(LanguagesPath.Append('*.ini'), 0);
+ while(Iter.HasNext) do
begin
- repeat
- SetLength(List, Length(List)+1);
- SetLength(ILanguage, Length(ILanguage)+1);
- SR.Name := ChangeFileExt(SR.Name, '');
-
- List[High(List)].Name := SR.Name;
- ILanguage[High(ILanguage)] := SR.Name;
- until (FindNext(SR) <> 0);
- SysUtils.FindClose(SR);
- end; // if FindFirst
+ IniInfo := Iter.Next;
+
+ LangName := IniInfo.Name.SetExtension('').ToUTF8;
+
+ SetLength(List, Length(List)+1);
+ List[High(List)].Name := LangName;
+
+ SetLength(ILanguage, Length(ILanguage)+1);
+ ILanguage[High(ILanguage)] := LangName;
+ end;
end;
{**
@@ -158,7 +163,7 @@ var
S: TStringList;
begin
SetLength(Entry, 0);
- IniFile := TIniFile.Create(LanguagesPath + Language + '.ini');
+ IniFile := TIniFile.Create(LanguagesPath.Append(Language + '.ini').ToNative);
S := TStringList.Create;
IniFile.ReadSectionValues('Text', S);