2009-06-25 07:16:22 -07:00
|
|
|
|
using System;
|
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
using System.Text;
|
|
|
|
|
using System.IO;
|
|
|
|
|
|
|
|
|
|
using Boare.Lib.AppUtil;
|
|
|
|
|
|
|
|
|
|
namespace Boare {
|
|
|
|
|
class lang2po {
|
|
|
|
|
static void Main( string[] args ) {
|
|
|
|
|
Console.WriteLine( "input source *.lang file name" );
|
|
|
|
|
string name = Console.ReadLine();
|
|
|
|
|
Console.WriteLine( "input result file name" );
|
|
|
|
|
string result = Console.ReadLine();
|
|
|
|
|
if ( File.Exists( result ) ) {
|
|
|
|
|
Console.WriteLine( "error; file \"" + result + "\" already exists." );
|
|
|
|
|
return;
|
|
|
|
|
}
|
2009-11-30 03:14:58 -08:00
|
|
|
|
Messaging.appendFromFile( "template.po" );
|
|
|
|
|
Messaging.setLanguage( "template" );
|
2009-06-25 07:16:22 -07:00
|
|
|
|
Dictionary<string, string> dict = new Dictionary<string, string>();
|
|
|
|
|
using ( StreamReader sr = new StreamReader( name ) ) {
|
|
|
|
|
string line;
|
|
|
|
|
while ( (line = sr.ReadLine()) != null ) {
|
|
|
|
|
string[] spl = line.Split( "\t".ToCharArray() );
|
|
|
|
|
if ( spl.Length >= 2 ) {
|
|
|
|
|
string id = spl[0];
|
|
|
|
|
string item = spl[1];
|
|
|
|
|
item = item.Replace( "\"", "\\\"" );
|
|
|
|
|
dict.Add( id, item );
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
using ( StreamWriter sw = new StreamWriter( result, false, Encoding.UTF8 ) ) {
|
|
|
|
|
sw.WriteLine( "msgid \"\"" );
|
|
|
|
|
sw.WriteLine( "msgstr \"\"" );
|
|
|
|
|
sw.WriteLine( "\"Project-Id-Version: \\n\"" );
|
|
|
|
|
sw.WriteLine( "\"Report-Msgid-Bugs-To: \\n\"" );
|
|
|
|
|
DateTime now = DateTime.Now;
|
|
|
|
|
DateTime utc = now.ToUniversalTime();
|
|
|
|
|
DateTime local = now.ToLocalTime();
|
|
|
|
|
TimeSpan ts = local.Subtract( utc );
|
|
|
|
|
int minutes = (int)ts.TotalMinutes;
|
|
|
|
|
int absmin = Math.Abs( minutes );
|
|
|
|
|
int hours = absmin / 60;
|
|
|
|
|
int mins = absmin - hours * 60;
|
|
|
|
|
string dt = (minutes > 0) ? "+" : "-";
|
|
|
|
|
dt += hours.ToString( "00" ) + mins.ToString( "00" );
|
|
|
|
|
sw.WriteLine( "\"POT-Creation-Date: " + local.Year + "-" + local.Month.ToString( "00" ) + "-" + local.Day.ToString( "00" ) + " " + local.Hour.ToString( "00" ) + ":" + local.Minute.ToString( "00" ) + dt + "\\n\"" );
|
|
|
|
|
sw.WriteLine( "\"PO-Revision-Date: \\n\"" );
|
|
|
|
|
sw.WriteLine( "\"Last-Translator: \\n\"" );
|
|
|
|
|
sw.WriteLine( "\"Language-Team: \\n\"" );
|
|
|
|
|
sw.WriteLine( "\"MIME-Version: 1.0\\n\"" );
|
|
|
|
|
sw.WriteLine( "\"Content-Type: text/plain; charset=UTF-8\\n\"" );
|
|
|
|
|
sw.WriteLine( "\"Content-Transfer-Encoding: 8bit\\n\"" );
|
|
|
|
|
sw.WriteLine( "\"X-Poedit-Language: \\n\"" );
|
|
|
|
|
sw.WriteLine( "\"X-Poedit-Country: \\n\"" );
|
|
|
|
|
sw.WriteLine( "\"X-Poedit-SourceCharset: utf-8\\n\"" );
|
|
|
|
|
sw.WriteLine( "\"X-Poedit-Basepath: .\\\\" + "\\n\"" );
|
|
|
|
|
sw.WriteLine( "\"X-Poedit-KeywordsList: _\\n\"" );
|
|
|
|
|
sw.WriteLine( "\"X-Poedit-SearchPath-0: Editor\\n\"" );
|
|
|
|
|
sw.WriteLine( "\"X-Poedit-SearchPath-1: Common\\n\"" );
|
|
|
|
|
sw.WriteLine( "\"X-Poedit-SearchPath-2: AviFile\\n\"" );
|
2009-11-30 03:14:58 -08:00
|
|
|
|
string[] keys = Messaging.getKeys( "template" );
|
2009-06-25 07:16:22 -07:00
|
|
|
|
foreach ( string key in keys ) {
|
2009-11-30 03:14:58 -08:00
|
|
|
|
string oldid = Messaging.getMessage( key );
|
2009-06-25 07:16:22 -07:00
|
|
|
|
if ( dict.ContainsKey( oldid ) ) {
|
|
|
|
|
string item = dict[oldid];
|
|
|
|
|
item = item.Replace( "\"", "\\\"" );
|
|
|
|
|
string key2 = key.Replace( "\"", "\\\"" );
|
|
|
|
|
sw.WriteLine( "msgid \"" + key2 + "\"" );
|
|
|
|
|
sw.WriteLine( "msgstr \"" + item + "\"" );
|
|
|
|
|
sw.WriteLine();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|