Skip to content

Commit 9f18064

Browse files
author
Daniel Gallego
authored
Merge pull request #3 from imartinez/feature/lang-region-support
Feature/lang region support
2 parents 4679182 + c2ba288 commit 9f18064

File tree

3 files changed

+37
-5
lines changed

3 files changed

+37
-5
lines changed

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,8 @@ Just run the new ```importPoEditorStrings``` task via Android Studio or command
5656
This task will:
5757
- download all strings files (every available lang) from PoEditor given the api token and project id.
5858
- process the incoming strings to fix some PoEditor incompatibilities with Android strings system.
59-
- create and save strings.xml files to ```/values-<lang>``` (or ```/values``` in case of the default lang)
59+
- create and save strings.xml files to ```/values-<lang>``` (or ```/values``` in case of the default lang). It supports
60+
region specific languages by creating the proper folders (i.e. ```/values-es-rMX```).
6061

6162
Handle Tablet specific strings
6263
--------
@@ -120,7 +121,6 @@ will become, in values-es/strings.xml
120121

121122
To-Do
122123
-------
123-
* Manage language specializations: i.e. values-es-rMX for Mexican.
124124
* Change placeholder system to avoid using ordinals by taking into account the placeholder value instead.
125125

126126
License

src/main/groovy/com/bq/gradle/ImportPoEditorStringsTask.groovy

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -110,15 +110,15 @@ class ImportPoEditorStringsTask extends DefaultTask {
110110
// If language folders doesn't exist, create it (both for smartphones and tablets)
111111
// TODO investigate if we can infer the res folder path instead of passing it using poEditorPlugin.res_dir_path
112112

113-
// TODO manage langauge specializations: values-es-rMX for Mexican
114-
def valuesFolder = it != defaultLang ? "values-${it}" : "values"
113+
def valuesModifier = createValuesModifierFromLangCode(it)
114+
def valuesFolder = valuesModifier != defaultLang ? "values-${valuesModifier}" : "values"
115115
File stringsFolder = new File("${resDirPath}/${valuesFolder}")
116116
if (!stringsFolder.exists()) {
117117
println 'Creating strings folder for new language'
118118
def folderCreated = stringsFolder.mkdir()
119119
println "Folder created: ${folderCreated}"
120120
}
121-
def tabletValuesFolder = it != defaultLang ? "values-${it}-sw600dp" : "values-sw600dp"
121+
def tabletValuesFolder = valuesModifier != defaultLang ? "values-${valuesModifier}-sw600dp" : "values-sw600dp"
122122
File tabletStringsFolder = new File("${resDirPath}/${tabletValuesFolder}")
123123
if (!tabletStringsFolder.exists()) {
124124
println 'Creating tablet strings folder for new language'
@@ -140,6 +140,20 @@ class ImportPoEditorStringsTask extends DefaultTask {
140140
}
141141
}
142142

143+
/**
144+
* Creates values file modifier taking into account specializations (i.e values-es-rMX for Mexican)
145+
* @param langCode
146+
* @return proper values file modifier (i.e. es-rMX)
147+
*/
148+
String createValuesModifierFromLangCode(String langCode) {
149+
if (!langCode.contains("-")) {
150+
return langCode
151+
} else {
152+
String[] langParts = langCode.split("-")
153+
return langParts[0] + "-" + "r" + langParts[1].toUpperCase()
154+
}
155+
}
156+
143157
String postProcessIncomingXMLString(String incomingXMLString) {
144158
// Post process the downloaded XML
145159
return incomingXMLString

src/test/groovy/org/gradle/ImportPoEditorStringsTaskTest.groovy

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -141,4 +141,22 @@ class ImportPoEditorStringsTaskTest {
141141
' </string>\n' +
142142
' </resources>'))
143143
}
144+
145+
@Test
146+
public void testCreateValuesModifierFromLangCodeWithNormalLangCode() throws Exception {
147+
Project project = ProjectBuilder.builder().build()
148+
def task = project.task('importPoEditorStrings', type: ImportPoEditorStringsTask)
149+
150+
assertEquals('es',
151+
((ImportPoEditorStringsTask)task).createValuesModifierFromLangCode('es'))
152+
}
153+
154+
@Test
155+
public void testCreateValuesModifierFromLangCodeWithSpecializedLangCode() throws Exception {
156+
Project project = ProjectBuilder.builder().build()
157+
def task = project.task('importPoEditorStrings', type: ImportPoEditorStringsTask)
158+
159+
assertEquals('es-rMX',
160+
((ImportPoEditorStringsTask)task).createValuesModifierFromLangCode('es-mx'))
161+
}
144162
}

0 commit comments

Comments
 (0)