vitalii201

Russian Globalization for CSL Map View. 19.06.18 (3)

Jun 16th, 2018
193
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.13 KB | None | 0 0
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4. using System.Text;
  5.  
  6. namespace CSLMod.CSLMapView.Modding.UI {
  7. /// <summary>
  8. /// 多言語化対応
  9. /// </summary>
  10. internal class Globalization {
  11. internal const string DEFAULT_LANGUAGE = "en";
  12. private readonly string[] supportedLanguages = new[] { "en", "ja", "zh", "zh-tw", "fr", "ru" };
  13. private Dictionary<string, Dictionary<StringKeys, string>> strings;
  14. /// <summary>
  15. /// 文字列のキー
  16. /// </summary>
  17. internal enum StringKeys {
  18. /// <summary>
  19. /// エクスポート
  20. /// </summary>
  21. Export,
  22. /// <summary>
  23. /// エクスポートしてビューアを起動
  24. /// </summary>
  25. ExportAndRun,
  26. /// <summary>
  27. /// 説明ラベル1のテキスト
  28. /// </summary>
  29. DescLabelExeOutputPath,
  30. DescLabelCslmapOutputPath,
  31. /// <summary>
  32. /// エクスポートに失敗しました。
  33. /// </summary>
  34. FailedToExportMap,
  35. /// <summary>
  36. /// ファイルのコピーに失敗しました。
  37. /// </summary>
  38. FailedToCopyFile,
  39. /// <summary>
  40. /// ゲームを開始してから実行してください。
  41. /// </summary>
  42. NotInGame,
  43. /// <summary>
  44. /// exeの起動に失敗しました。
  45. /// </summary>
  46. FailedToRunViewer,
  47.  
  48. Compress,
  49.  
  50. AddTimestampToFileName,
  51.  
  52. AutoExportOnSave
  53. }
  54. /// <summary>
  55. /// 現在の言語
  56. /// </summary>
  57. internal string Language { get; set; } = DEFAULT_LANGUAGE;
  58. /// <summary>
  59. /// コンストラクタ
  60. /// </summary>
  61. internal Globalization() {
  62. strings = new Dictionary<string, Dictionary<StringKeys, string>>();
  63.  
  64. strings.Add( "en", new Dictionary<StringKeys, string>() );
  65. initEn( strings["en"] );
  66. strings.Add( "ja", new Dictionary<StringKeys, string>() );
  67. initJa( strings["ja"] );
  68. strings.Add( "zh", new Dictionary<StringKeys, string>() );
  69. initZh( strings["zh"] );
  70. strings.Add( "zh-tw", new Dictionary<StringKeys, string>() );
  71. initZh( strings["zh-tw"] );
  72. strings.Add( "fr", new Dictionary<StringKeys, string>() );
  73. initFr( strings["fr"] );
  74. strings.Add( "ru", new Dictionary<StringKeys, string>() );
  75. initRu( strings["ru"] );
  76. }
  77. private void initJa( Dictionary<StringKeys, string> dic ) {
  78. dic.Add( StringKeys.Export, "エクスポート" );
  79. dic.Add( StringKeys.ExportAndRun, "エクスポートしてビューアを起動" );
  80. dic.Add( StringKeys.DescLabelExeOutputPath, "ビューアのパス(自動的にインストールされます)" );
  81. dic.Add( StringKeys.DescLabelCslmapOutputPath, "マップファイル(*.cslmap)の出力先" );
  82. dic.Add( StringKeys.FailedToExportMap, "エクスポートに失敗しました。" );
  83. dic.Add( StringKeys.FailedToCopyFile, "ファイルのコピーに失敗しました。" );
  84. dic.Add( StringKeys.NotInGame, "ゲームを開始してから実行してください。" );
  85. dic.Add( StringKeys.FailedToRunViewer, $"{CSLMapView.VIEWER_EXE}の起動に失敗しました。" );
  86. dic.Add( StringKeys.Compress, ".cslmapファイルの圧縮 (*.cslmap.gzを出力します)" );
  87. dic.Add( StringKeys.AddTimestampToFileName, "ファイル名にタイムスタンプを付与" );
  88. dic.Add( StringKeys.AutoExportOnSave, "ゲームセーブ時に自動エクスポート" );
  89. }
  90. private void initEn( Dictionary<StringKeys, string> dic ) {
  91. dic.Add( StringKeys.Export, "Export" );
  92. dic.Add( StringKeys.ExportAndRun, "Export and Run viewer" );
  93. dic.Add( StringKeys.DescLabelExeOutputPath, "Viewer app path (will be automatically installed)" );
  94. dic.Add( StringKeys.DescLabelCslmapOutputPath, "Map file(*.cslmap) output path" );
  95. dic.Add( StringKeys.FailedToExportMap, "Failed to export map." );
  96. dic.Add( StringKeys.FailedToCopyFile, "Failed to copy files." );
  97. dic.Add( StringKeys.NotInGame, "Map is not loaded." );
  98. dic.Add( StringKeys.FailedToRunViewer, $"Failed to run {CSLMapView.VIEWER_EXE}" );
  99. dic.Add( StringKeys.Compress, "Compress .cslmap (outputs *.cslmap.gz)" );
  100. dic.Add( StringKeys.AddTimestampToFileName, "Add timestamp to file name" );
  101. dic.Add( StringKeys.AutoExportOnSave, "Auto export on saving game" );
  102. }
  103. private void initZh( Dictionary<StringKeys, string> dic ) {
  104. dic.Add( StringKeys.Export, "輸出" );
  105. dic.Add( StringKeys.ExportAndRun, "輸出后開啟" );
  106. dic.Add( StringKeys.DescLabelExeOutputPath, "檢視器程式將會複製到以下路徑" );
  107. dic.Add( StringKeys.DescLabelCslmapOutputPath, "地圖文件(*.cslmap)將會複製到以下路徑" );
  108. dic.Add( StringKeys.FailedToExportMap, "輸出失敗" );
  109. dic.Add( StringKeys.FailedToCopyFile, "複製文件失敗" );
  110. dic.Add( StringKeys.NotInGame, "未開啟任何一個游戲存檔" );
  111. dic.Add( StringKeys.FailedToRunViewer, $"啟動{CSLMapView.VIEWER_EXE}失敗" );
  112. dic.Add( StringKeys.Compress, "壓縮 .cslmap (輸出 *.cslmap.gz)" );
  113. dic.Add( StringKeys.AddTimestampToFileName, "增加時間標記至檔案名" );
  114. }
  115. private void initFr( Dictionary<StringKeys, string> dic ) {
  116. dic.Add( StringKeys.Export, "Exporter" );
  117. dic.Add( StringKeys.ExportAndRun, "Exporter et lancer CSLMapView" );
  118. dic.Add( StringKeys.DescLabelExeOutputPath, "Chemin vers l'application CSLMapView (sera installé automatiquement)" );
  119. dic.Add( StringKeys.DescLabelCslmapOutputPath, "Chemin de sortie du fichier de la carte (*.cslmap)" );
  120. dic.Add( StringKeys.FailedToExportMap, "L'export de la carte a échoué." );
  121. dic.Add( StringKeys.FailedToCopyFile, "La copie des fichiers a échoué." );
  122. dic.Add( StringKeys.NotInGame, "Carte introuvable." );
  123. dic.Add( StringKeys.FailedToRunViewer, $"Le lancement de {CSLMapView.VIEWER_EXE} a échoué." );
  124. dic.Add( StringKeys.Compress, "Compresser .cslmap (sortie *.cslmap.gz)" );
  125. dic.Add( StringKeys.AddTimestampToFileName, "Ajouter un timestamp au nom du fichier" );
  126. }
  127. private void initRu( Dictionary<StringKeys, string> dic ) {
  128. dic.Add( StringKeys.Export, "Экспорт" );
  129. dic.Add( StringKeys.ExportAndRun, "Экспорт и запуск CSLMapView" );
  130. dic.Add( StringKeys.DescLabelExeOutputPath, "Папка просмотрщика CSLMapView(устанавливается автоматически)" );
  131. dic.Add( StringKeys.DescLabelCslmapOutputPath, "Папка сохранения файла карты (*.cslmap)" );
  132. dic.Add( StringKeys.FailedToExportMap, "Не удалось экспортировать карту." );
  133. dic.Add( StringKeys.FailedToCopyFile, "Не удалось скопировать файлы." );
  134. dic.Add( StringKeys.NotInGame, "Карта не загружена." );
  135. dic.Add( StringKeys.FailedToRunViewer, $"Не удалось запустить {CSLMapView.VIEWER_EXE}" );
  136. dic.Add( StringKeys.Compress, "Архивировать .cslmap (в *.cslmap.gz)" );
  137. dic.Add( StringKeys.AddTimestampToFileName, "Добавить временную метку в имя файла" );
  138. dic.Add( StringKeys.AutoExportOnSave, "Автоэкспорт при сохранении игры" );
  139. }
  140. /// <summary>
  141. /// デフォルト言語での文字列を取得します。
  142. /// </summary>
  143. /// <param name="key">文字列キー</param>
  144. /// <returns></returns>
  145. internal string GetString( StringKeys key ) {
  146. return GetString( Language, key );
  147. }
  148.  
  149. /// <summary>
  150. /// 指定した言語での文字列を取得します。
  151. /// </summary>
  152. /// <param name="lang">言語(en,ja)</param>
  153. /// <param name="key">文字列キー</param>
  154. /// <returns></returns>
  155. internal string GetString( string lang, StringKeys key ) {
  156. if( !supportedLanguages.Contains( lang ) ) {
  157. lang = DEFAULT_LANGUAGE;
  158. }
  159. Dictionary<StringKeys, string> dic = strings[lang];
  160. if( dic.ContainsKey( key ) ) {
  161. return dic[key];
  162. } else {
  163. if( lang == DEFAULT_LANGUAGE ) {
  164. return null;
  165. }
  166. return GetString( DEFAULT_LANGUAGE, key );
  167. }
  168. }
  169. }
  170. }
Advertisement
Add Comment
Please, Sign In to add comment