mirror of
				https://git.femboyfinancial.jp/james/lipsync.git
				synced 2025-10-30 13:53:44 -07:00 
			
		
		
		
	
		
			
				
	
	
		
			120 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
			
		
		
	
	
			120 lines
		
	
	
		
			3.9 KiB
		
	
	
	
		
			C#
		
	
	
	
	
	
| /*
 | |
|  * Messaging.cs
 | |
|  * Copyright (c) 2008-2009 kbinani
 | |
|  *
 | |
|  * This file is part of Boare.Lib.AppUtil.
 | |
|  *
 | |
|  * Boare.Lib.AppUtil is free software; you can redistribute it and/or
 | |
|  * modify it under the terms of the BSD License.
 | |
|  *
 | |
|  * Boare.Lib.AppUtil is distributed in the hope that it will be useful,
 | |
|  * but WITHOUT ANY WARRANTY; without even the implied warranty of
 | |
|  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 | |
|  */
 | |
| using System;
 | |
| using System.Collections.Generic;
 | |
| using System.IO;
 | |
| using System.Windows.Forms;
 | |
| 
 | |
| namespace Boare.Lib.AppUtil {
 | |
| 
 | |
|     public static class Messaging {
 | |
|         private static string s_lang = "";
 | |
|         private static List<MessageBody> s_messages = new List<MessageBody>();
 | |
|         
 | |
|         public static string[] GetKeys( string lang ) {
 | |
|             foreach ( MessageBody dict in s_messages ) {
 | |
|                 if ( lang == dict.lang ) {
 | |
|                     List<string> list = new List<string>();
 | |
|                     foreach ( string key in dict.list.Keys ) {
 | |
|                         list.Add( key );
 | |
|                     }
 | |
|                     return list.ToArray();
 | |
|                 }
 | |
|             }
 | |
|             return null;
 | |
|         }
 | |
| 
 | |
|         public static string[] GetRegisteredLanguage() {
 | |
|             List<string> res = new List<string>();
 | |
|             foreach ( MessageBody dict in s_messages ) {
 | |
|                 res.Add( dict.lang );
 | |
|             }
 | |
|             return res.ToArray();
 | |
|         }
 | |
| 
 | |
|         public static string Language {
 | |
|             get {
 | |
|                 if ( s_lang != "" ) {
 | |
|                     return s_lang;
 | |
|                 } else {
 | |
|                     s_lang = "en";
 | |
|                     return s_lang;
 | |
|                 }
 | |
|             }
 | |
|             set {
 | |
|                 if ( value != "" ) {
 | |
|                     s_lang = value;
 | |
|                 } else {
 | |
|                     s_lang = "en";
 | |
|                 }
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         /// <summary>
 | |
|         /// 現在の実行ディレクトリにある言語設定ファイルを全て読込み、メッセージリストに追加します
 | |
|         /// </summary>
 | |
|         public static void LoadMessages() {
 | |
|             LoadMessages( Application.StartupPath );
 | |
|         }
 | |
| 
 | |
|         /// <summary>
 | |
|         /// 指定されたディレクトリにある言語設定ファイルを全て読込み、メッセージリストに追加します
 | |
|         /// </summary>
 | |
|         /// <param name="directory"></param>
 | |
|         public static void LoadMessages( string directory ) {
 | |
|             DirectoryInfo current = new DirectoryInfo( directory );
 | |
|             s_messages.Clear();
 | |
| #if DEBUG
 | |
|             Console.WriteLine( "Messaging+LoadMessages()" );
 | |
| #endif
 | |
|             foreach ( FileInfo fi in current.GetFiles( "*.po" ) ) {
 | |
|                 string fname = fi.FullName;
 | |
| #if DEBUG
 | |
|                 Console.WriteLine( "    fname=" + fname );
 | |
| #endif
 | |
|                 AppendFromFile( fname );
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         public static void AppendFromFile( string file ) {
 | |
|             s_messages.Add( new MessageBody( Path.GetFileNameWithoutExtension( file ), file ) );
 | |
|         }
 | |
| 
 | |
|         public static MessageBodyEntry GetMessageDetail( string id ) {
 | |
|             if ( s_lang.Length <= 0 ) {
 | |
|                 s_lang = "en";
 | |
|             }
 | |
|             foreach ( MessageBody mb in s_messages ) {
 | |
|                 if ( mb.lang == s_lang ) {
 | |
|                     return mb.GetMessageDetail( id );
 | |
|                 }
 | |
|             }
 | |
|             return new MessageBodyEntry( id, new string[] { } );
 | |
|         }
 | |
| 
 | |
|         public static string GetMessage( string id ) {
 | |
|             if ( s_lang.Length <= 0 ) {
 | |
|                 s_lang = "en";
 | |
|             }
 | |
|             foreach ( MessageBody mb in s_messages ) {
 | |
|                 if ( mb.lang == s_lang ) {
 | |
|                     return mb.GetMessage( id );
 | |
|                 }
 | |
|             }
 | |
|             return id;
 | |
|         }
 | |
|     }
 | |
| 
 | |
| }
 | 
