Small fixes for gettext parser.
This commit is contained in:
@@ -39,7 +39,7 @@ namespace Claunia.Localization.Parsers
|
||||
string extractedComment = "";
|
||||
string currentReference = "";
|
||||
string currentContext = "";
|
||||
var currentLanguage = Language.None;
|
||||
Language currentLanguage = Language.None;
|
||||
|
||||
while(line != null)
|
||||
{
|
||||
@@ -51,19 +51,21 @@ namespace Claunia.Localization.Parsers
|
||||
{
|
||||
if(!firstEmptyMessageId)
|
||||
{
|
||||
var message = localization.NewMessage();
|
||||
Message message = localization.NewMessage();
|
||||
|
||||
message.Comments = extractedComment;
|
||||
message.Context = currentContext;
|
||||
message.Reference = currentReference;
|
||||
message.Source.Singular = currentMsgId;
|
||||
message.Id = currentMsgId;
|
||||
var localizedString = message.NewLocalizedString();
|
||||
message.Id = currentContext + currentMsgId;
|
||||
LocalizedString localizedString = message.NewLocalizedString();
|
||||
|
||||
localizedString.Comments = currentComment;
|
||||
localizedString.Locale = currentLocale;
|
||||
localizedString.Singular = currentMsgString;
|
||||
localizedString.Translator = currentTranslator?.Id;
|
||||
|
||||
// TODO: Parse per programming language
|
||||
}
|
||||
|
||||
firstEmptyMessageId = false;
|
||||
@@ -80,8 +82,7 @@ namespace Claunia.Localization.Parsers
|
||||
{
|
||||
if(line.Length == 1)
|
||||
{
|
||||
if(!firstEmptyMessageId)
|
||||
currentComment += "\n";
|
||||
if(!firstEmptyMessageId) currentComment += Environment.NewLine;
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -90,22 +91,16 @@ namespace Claunia.Localization.Parsers
|
||||
case ' ':
|
||||
if(firstEmptyMessageId) break;
|
||||
|
||||
currentComment += line.Substring(2) + "\n";
|
||||
currentComment += line.Substring(2) + Environment.NewLine;
|
||||
continue;
|
||||
case '.':
|
||||
extractedComment += line.Substring(2) + "\n";
|
||||
extractedComment += line.Substring(3) + Environment.NewLine;
|
||||
continue;
|
||||
case ':':
|
||||
currentReference += line.Substring(2) + "\n";
|
||||
currentReference += line.Substring(3) + Environment.NewLine;
|
||||
continue;
|
||||
case ',':
|
||||
var flags = line.Substring(2);
|
||||
|
||||
if(flags.StartsWith("no-"))
|
||||
{
|
||||
currentLanguage = Language.None;
|
||||
continue;
|
||||
}
|
||||
string flags = line.Substring(2);
|
||||
|
||||
switch(flags)
|
||||
{
|
||||
@@ -195,6 +190,7 @@ namespace Claunia.Localization.Parsers
|
||||
currentLanguage = Language.None;
|
||||
continue;
|
||||
}
|
||||
|
||||
case '|': break;
|
||||
}
|
||||
}
|
||||
@@ -219,15 +215,13 @@ namespace Claunia.Localization.Parsers
|
||||
continue;
|
||||
}
|
||||
|
||||
var projectString = line.Substring(1, line.Length - 2);
|
||||
string projectString = line.Substring(1, line.Length - 2);
|
||||
|
||||
if(projectString.StartsWith("Project-Id-Version", StringComparison.Ordinal))
|
||||
{
|
||||
var projectIdVersion = projectString.Substring(20, projectString.Length - 20);
|
||||
string projectIdVersion = projectString.Substring(20, projectString.Length - 20);
|
||||
if(projectIdVersion.EndsWith("\\n", StringComparison.Ordinal))
|
||||
{
|
||||
projectIdVersion = projectIdVersion.Substring(0, projectIdVersion.Length - 2);
|
||||
}
|
||||
|
||||
localization.Project.Name = projectIdVersion;
|
||||
continue;
|
||||
@@ -235,11 +229,9 @@ namespace Claunia.Localization.Parsers
|
||||
|
||||
if(projectString.StartsWith("Report-Msgid-Bugs-To", StringComparison.Ordinal))
|
||||
{
|
||||
var projectReportTo = projectString.Substring(22, projectString.Length - 22);
|
||||
string projectReportTo = projectString.Substring(22, projectString.Length - 22);
|
||||
if(projectReportTo.EndsWith("\\n", StringComparison.Ordinal))
|
||||
{
|
||||
projectReportTo = projectReportTo.Substring(0, projectReportTo.Length - 2);
|
||||
}
|
||||
|
||||
localization.Project.Url = projectReportTo;
|
||||
continue;
|
||||
@@ -247,23 +239,20 @@ namespace Claunia.Localization.Parsers
|
||||
|
||||
if(projectString.StartsWith("Last-Translator", StringComparison.Ordinal))
|
||||
{
|
||||
var lastTranslator = projectString.Substring(17, projectString.Length - 17);
|
||||
string lastTranslator = projectString.Substring(17, projectString.Length - 17);
|
||||
if(lastTranslator.EndsWith("\\n", StringComparison.Ordinal))
|
||||
{
|
||||
lastTranslator = lastTranslator.Substring(0, lastTranslator.Length - 2);
|
||||
}
|
||||
|
||||
if(lastTranslator[lastTranslator.Length - 1] == '>')
|
||||
{
|
||||
var emailStart = lastTranslator.LastIndexOf('<');
|
||||
var name = lastTranslator.Substring(0, emailStart - 1);
|
||||
var email = lastTranslator.Substring(emailStart + 1,
|
||||
int emailStart = lastTranslator.LastIndexOf('<');
|
||||
string name = lastTranslator.Substring(0, emailStart - 1);
|
||||
string email = lastTranslator.Substring(emailStart + 1,
|
||||
lastTranslator.Length - emailStart - 2);
|
||||
|
||||
currentTranslator = localization.NewTranslator(name, email);
|
||||
}
|
||||
else
|
||||
currentTranslator = localization.NewTranslator(lastTranslator, null);
|
||||
else currentTranslator = localization.NewTranslator(lastTranslator, null);
|
||||
|
||||
continue;
|
||||
}
|
||||
@@ -272,12 +261,8 @@ namespace Claunia.Localization.Parsers
|
||||
{
|
||||
currentLocale = projectString.Substring(10, projectString.Length - 10);
|
||||
if(currentLocale.EndsWith("\\n", StringComparison.Ordinal))
|
||||
{
|
||||
currentLocale = currentLocale.Substring(0, currentLocale.Length - 2);
|
||||
}
|
||||
|
||||
continue;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user