@@ -47,6 +47,11 @@ class LanguageResDialog(
4747    // 带翻译的内容
4848    var  tvChinese:  JTextField ?  =  null 
4949
50+     // 如果是arb(Applicatio Resource Bundle)需要支持设置描述词
51+     var  tvDescription:  JTextField ?  =  null 
52+ 
53+     var  textDescription:  JLabel ?  =  null 
54+ 
5055    // 选择的语言内容
5156    var  tvLanguages:  JTextField ?  =  null 
5257
@@ -62,6 +67,8 @@ class LanguageResDialog(
6267    // 语言码跟翻译后的文本
6368    val  mapValues =  HashMap <String , String ?>()
6469
70+     val  descriptionValues =  HashMap <String , String ?>()
71+ 
6572    // 通过读取properties读取初始化语种和需要翻译的语种
6673    private  var  properties:  PropertiesHelper ?  =  null 
6774
@@ -81,6 +88,7 @@ class LanguageResDialog(
8188    private  fun  onTranslate () {
8289        builder.clear()
8390        mapValues.clear()
91+         descriptionValues.clear()
8492        psiElement.runWriteCmd(::runTranslate)
8593    }
8694
@@ -92,12 +100,28 @@ class LanguageResDialog(
92100        } else  {
93101            for  (languageCode in  languages!! ) {
94102                val  value =  HttpApi .translate(tvChinese!! .text, languageCode)
103+                 var  description =  tvDescription?.text
104+                 if  (! TextUtils .isEmpty(description)) {
105+                     description =  HttpApi .translate(description!! , languageCode)?.trim()
106+                 }
107+ 
95108                if  (languageCode ==  " en" 
96109                    mapValues.put(languageCode, value?.firstUpperCamel())
110+                     if  (! TextUtils .isEmpty(description)) {
111+                         descriptionValues.put(languageCode, description?.firstUpperCamel())
112+                     }
97113                } else  {
98114                    mapValues.put(languageCode, value)
115+                     if  (! TextUtils .isEmpty(description)) {
116+                         descriptionValues.put(languageCode, description)
117+                     }
99118                }
100-                 builder.append(languageCode).append(" \n " " \n\n " 
119+                 builder.append(languageCode)
120+                     .append(" \n " 
121+                     .append(mapValues[languageCode])
122+                     .append(" \n " 
123+                     .append(description)
124+                     .append(" \n " 
101125                if  (languageCode ==  " en" 
102126                    tvKey?.text =  value?.replace("  " " _" 
103127                }
@@ -123,7 +147,7 @@ class LanguageResDialog(
123147                }
124148            }
125149
126-             if  (isContainJson ()) {
150+             if  (isJsonOrArb ()) {
127151                handleWrite2JsonFile()
128152            } else  {
129153                LanguageDartWriter (
@@ -148,13 +172,19 @@ class LanguageResDialog(
148172        for  (psiElement in  psiElement.children) {
149173            if  (psiElement is  PsiFile ) {
150174                val  file =  psiElement.virtualFile
175+ 
151176                try  {
152-                     if  (file.name.endsWith(" .json" 
153-                         val  name =  file.nameWithoutExtension
177+                     if  (file.name.endsWith(" .json"   ||  file.name.endsWith( " .arb " ) ) {
178+                         val  name =  file.nameWithoutExtension.replace( " app_ " ,  " " ) 
154179                        val  jsonFile =  File (file.path)
155180                        val  json =  jsonFile.readText().toJSON() as  JSONObject 
156181                        val  value =  mapValues[name]
157182                        json.put(tvKey!! .text, value)
183+ 
184+                         val  description =  descriptionValues[name]
185+                         if  (! TextUtils .isEmpty(description)) {
186+                             json.put(" @${tvKey!! .text} " JSONObject (mapOf (Pair (" description" 
187+                         }
158188                        jsonFile.writeText(json.toJSONString())
159189                    }
160190                } catch  (e:  Exception ) {
@@ -168,10 +198,20 @@ class LanguageResDialog(
168198    /* *
169199     * 是否包含json文件 
170200     **/  
171-     private  fun  isContainJson (): Boolean  {
201+     private  fun  isJsonOrArb (): Boolean  {
172202        for  (psiElement in  psiElement.children) {
173203            if  (psiElement is  PsiFile ) {
174-                 return  psiElement.virtualFile.name.endsWith(" .json" 
204+                 val  name =  psiElement.virtualFile.name
205+                 return  name.endsWith(" .json" ||  name.endsWith(" .arb" 
206+             }
207+         }
208+         return  false 
209+     }
210+ 
211+     private  fun  isArb (): Boolean  {
212+         for  (psiElement in  psiElement.children) {
213+             if  (psiElement is  PsiFile ) {
214+                 return  psiElement.virtualFile.name.endsWith(" .arb" 
175215            }
176216        }
177217        return  false 
@@ -234,12 +274,17 @@ class LanguageResDialog(
234274        val  languageString =  properties?.getProperty(PluginProps .languages) ? :  defaultLanguage
235275        rawLanguage =  properties?.getProperty(PluginProps .rawLanguage) ? :  rawLanguage
236276        needTranslate =  " true" ==  properties?.getProperty(PluginProps .needTranslate)
237-         if  (isContainJson()) {
277+ 
278+         val  isArb =  isArb();
279+         tvDescription!! .isVisible =  isArb
280+         textDescription!! .isVisible =  isArb
281+ 
282+         if  (isJsonOrArb()) {
238283            languages =  arrayListOf ()
239284            val  arrays =  languages as  ArrayList <String >
240285            for  (psi in  psiElement.children) {
241286                if  (psi is  PsiFile ) {
242-                     arrays.add(psi.virtualFile.nameWithoutExtension)
287+                     arrays.add(psi.virtualFile.nameWithoutExtension.replace( " app_ " ,  " " ) )
243288                }
244289            }
245290            tvLanguages?.text =  arrays.joinToString(separator =  " ," 
0 commit comments