using PluginManager.Others;
using System.Collections.Generic;
using System;
using System.IO;
namespace PluginManager.LanguageSystem
{
public class Language
{
///
/// The active language
///
public static Language? ActiveLanguage = null;
private static readonly string LanguageFileExtension = ".lng";
///
/// The name of the language
///
public string LanguageName { get; }
///
/// The file where the language is imported from
///
public string fileName { get; }
///
/// The dictionary of the language
///
public Dictionary LanguageWords { get; }
///
/// The Language constructor
///
/// The file to import the language from
/// The dictionary of the language
/// The name of the language
private Language(string fileName, Dictionary words, string LanguageName)
{
this.fileName = fileName;
this.LanguageName = LanguageName;
LanguageWords = words;
}
///
/// Load language from file
///
/// The file path
///
public static Language? CreateLanguageFromFile(string LanguageFileLocation)
{
if (!LanguageFileLocation.EndsWith(LanguageFileExtension))
{
Console.WriteLine("Failed to load language from file: " + LanguageFileLocation +
"\nFile extension is not " + LanguageFileExtension);
return null;
}
string[] lines = File.ReadAllLines(LanguageFileLocation);
var languageName = "Unknown";
var words = new Dictionary();
foreach (string line in lines)
{
if (line.StartsWith("#") || line.Length < 4)
continue;
string[] sLine = line.Split('=');
if (sLine[0] == "LANGUAGE_NAME")
{
languageName = sLine[1];
continue;
}
words.Add(sLine[0], sLine[1]);
}
Functions.WriteLogFile("Successfully loaded language: " + languageName + " from file : " +
LanguageFileLocation.Replace('\\', '/'));
return new Language(LanguageFileLocation, words, languageName);
}
///
/// Format text by inserting parameters
///
/// The raw text
/// The arguments
///
public string FormatText(string text, params string[] args)
{
if (ActiveLanguage == null) return text;
int l = args.Length;
for (var i = 0; i < l; i++) text = text.Replace($"{i}", args[i]);
return text;
}
}
}