根據輸入的
name
,value
,lineNum
在各個strings.xml
裏指定的行號增長字段,支持Google翻譯
java
Groovy
環境Google翻譯
Api的key
收費!git
addString.groovy
所在文件夾
複製到項目的對應位置addString.groovy
最後的方法調用import groovy.json.JsonOutput
import groovyx.net.http.HttpResponseException
import groovyx.net.http.RESTClient
import groovy.transform.Field
/** * @Grab http://ifeve.com/groovy-grape/ * 網絡訪問的庫 * https://github.com/jgritman/httpbuilder */
@Grab('org.codehaus.groovy.modules.http-builder:http-builder:0.7.1')
import static groovyx.net.http.ContentType.URLENC
@Field fileDirs = new File("../src/main/res")
@Field googleTranslationUrl = 'https://translation.googleapis.com/language/'
--請填入google翻譯api的key
@Field googleTranslationKey = 'google翻譯api的key'
/** * 使用google翻譯 的源語言 */
@Field sourceLanguage = 'en'
/** * 默認語言 */
@Field defaultLanguage = 'en'
static def getInput(def name, def value) {
def input = " <string name=\"$name\">$value</string>"
return input
}
static def appendWihLineNum(def list, def lineNum, def value) {
//超過最大行數則添加到最後
list.add(list.size > lineNum ? lineNum : list.size - 1, value)
}
/** * 添加字符串文件 * @param name name * @param value 默認值 或 array * @param lineNumber 行號,超過最大,會add進倒數第二行 * @param useGoogleTranslation 要求 value 必須是英語 */
void appendStringArrays(def name, def value, def lineNumber, def useGoogleTranslation) {
def fileIndex = 0
def input = getInput(name, value)
//找匹配 values.* 的文件或文件夾
fileDirs.eachFileMatch(~/values.*/) {
directory ->
//找strings.xml
directory.eachFileMatch(/strings.xml/) {
// 文件 轉 List<String>
def lines = it.readLines()
def directoryNameSplitLanguage = directory.name.split("-")
//取當前文件夾對應的語言
def language = directoryNameSplitLanguage.length == 1 ? defaultLanguage : directory.name.split("-")[1]
//須要google翻譯,同語言不翻譯
if (useGoogleTranslation && language != sourceLanguage) {
//填充的內容, will be url-encoded
def body = [q: value, target: language, format: 'text', source: sourceLanguage, key: googleTranslationKey]
def http = new RESTClient(googleTranslationUrl)
http.ignoreSSLIssues()
try {
def resp = http.post(path: 'translate/v2', body: body, requestContentType: URLENC,
headers: ['Content-Type': 'application/x-www-form-urlencoded'])
//填充翻譯以後的文本
def result = resp.getData().data.translations[0].translatedText appendWihLineNum(lines, lineNumber, getInput(name, result)) it.text = lines.join('\n')
return
} catch (HttpResponseException e) {
r = e.response println("Success: $r.success") println("Status: $r.status") println("Reason: $r.statusLine.reasonPhrase") println("Content: \n${JsonOutput.prettyPrint(JsonOutput.toJson(r.data))}") } } else if (value instanceof List) {
input = getInput(name, value.get(fileIndex))
}
appendWihLineNum(lines, lineNumber, input)
//assert [1, 2, 3].join('-') == '1-2-3'
//修改文件的內容
it.text = lines.join('\n')
fileIndex++
}
}
}
複製代碼