@@ -52,14 +52,20 @@ private void Save()
5252
5353 [ FoldoutGroup ( "Add New Language" , expanded : true ) ]
5454 [ ShowInInspector , PropertyOrder ( 0 ) ]
55- private SystemLanguage newLanguage = SystemLanguage . Afrikaans ;
55+ [ ValueDropdown ( "GetNewLanguages" ) ]
56+ private SystemLanguage _newLanguage = SystemLanguage . Afrikaans ;
5657
5758 [ FoldoutGroup ( "Add New Language" ) ]
5859 [ ShowInInspector , PropertyOrder ( 1 ) ]
59- [ Button ( "🆕 Create New Language From Base (English)" , ButtonSizes . Large ) , GUIColor ( 0.1f , 0.8f , 1f ) ]
60- private void CreateNewLanguageFromEnglish ( )
60+ [ ValueDropdown ( "GetAvailableLanguages" ) ]
61+ private string _baseLanguage = "English" ;
62+
63+ [ FoldoutGroup ( "Add New Language" ) ]
64+ [ ShowInInspector , PropertyOrder ( 2 ) ]
65+ [ Button ( "🆕 Create New Language From Base" , ButtonSizes . Large ) , GUIColor ( 0.1f , 0.8f , 1f ) ]
66+ private void CreateNewLanguageFromBase ( )
6167 {
62- string newLang = newLanguage . ToString ( ) ;
68+ string newLang = _newLanguage . ToString ( ) ;
6369 string targetPath = Path . Combine ( LocalizationFolder , newLang + ".txt" ) ;
6470
6571 if ( File . Exists ( targetPath ) )
@@ -68,17 +74,17 @@ private void CreateNewLanguageFromEnglish()
6874 return ;
6975 }
7076
71- string basePath = Path . Combine ( LocalizationFolder , "English .txt") ;
77+ string basePath = Path . Combine ( LocalizationFolder , _baseLanguage + " .txt") ;
7278 if ( ! File . Exists ( basePath ) )
7379 {
74- Debug . LogError ( "Base English .txt not found!" ) ;
80+ Debug . LogError ( $ "Base language file ' { _baseLanguage } .txt' not found!") ;
7581 return ;
7682 }
7783
7884 File . Copy ( basePath , targetPath ) ;
7985 AssetDatabase . Refresh ( ) ;
8086
81- Debug . Log ( $ "✅ Created '{ newLang } ' from English .") ;
87+ Debug . Log ( $ "✅ Created '{ newLang } ' from ' { _baseLanguage } ' .") ;
8288 }
8389
8490 private void LoadLocalizationFile ( )
@@ -114,6 +120,16 @@ private IEnumerable<string> GetAvailableLanguages()
114120 yield return Path . GetFileNameWithoutExtension ( file ) ;
115121 }
116122
123+ private IEnumerable < SystemLanguage > GetNewLanguages ( )
124+ {
125+ var existing = new HashSet < string > ( GetAvailableLanguages ( ) , StringComparer . OrdinalIgnoreCase ) ;
126+ foreach ( SystemLanguage lang in Enum . GetValues ( typeof ( SystemLanguage ) ) )
127+ {
128+ if ( ! existing . Contains ( lang . ToString ( ) ) )
129+ yield return lang ;
130+ }
131+ }
132+
117133 [ Serializable ]
118134 public class LocalizationEntry
119135 {
0 commit comments