Added plurals resource.
This commit is contained in:
parent
6f1ad8a69b
commit
2283c42046
4 changed files with 14 additions and 29 deletions
|
@ -44,7 +44,6 @@ import com.google.gson.JsonSyntaxException
|
||||||
import net.thauvin.erik.android.tesremoteprogrammer.models.Config
|
import net.thauvin.erik.android.tesremoteprogrammer.models.Config
|
||||||
import net.thauvin.erik.android.tesremoteprogrammer.models.Configurations
|
import net.thauvin.erik.android.tesremoteprogrammer.models.Configurations
|
||||||
import net.thauvin.erik.android.tesremoteprogrammer.util.Dtmf
|
import net.thauvin.erik.android.tesremoteprogrammer.util.Dtmf
|
||||||
import net.thauvin.erik.android.tesremoteprogrammer.util.plural
|
|
||||||
import org.jetbrains.anko.*
|
import org.jetbrains.anko.*
|
||||||
import org.jetbrains.anko.design.textInputLayout
|
import org.jetbrains.anko.design.textInputLayout
|
||||||
import permissions.dispatcher.NeedsPermission
|
import permissions.dispatcher.NeedsPermission
|
||||||
|
@ -304,10 +303,12 @@ class MainActivity : AppCompatActivity(), AnkoLogger {
|
||||||
config = Gson().fromJson(InputStreamReader(resources.openRawResource(it)),
|
config = Gson().fromJson(InputStreamReader(resources.openRawResource(it)),
|
||||||
Config::class.java)
|
Config::class.java)
|
||||||
|
|
||||||
// val errors = StringBuilder()
|
if (BuildConfig.DEBUG) {
|
||||||
// if (!validateConfig(config, errors)) {
|
val errors = StringBuilder()
|
||||||
// info("${config.params.name}: $errors")
|
if (!validateConfig(config, errors)) {
|
||||||
// }
|
info(">>> ${config.params.name}: " + Html.fromHtml(errors.toString()))
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
confs.configs.put(config.params.name, config)
|
confs.configs.put(config.params.name, config)
|
||||||
}
|
}
|
||||||
|
@ -413,7 +414,7 @@ class MainActivity : AppCompatActivity(), AnkoLogger {
|
||||||
if (size > 0 && (fields[1].text.length != size)) {
|
if (size > 0 && (fields[1].text.length != size)) {
|
||||||
isValid = false
|
isValid = false
|
||||||
fields[1].error = getString(R.string.error_invalid_size, size,
|
fields[1].error = getString(R.string.error_invalid_size, size,
|
||||||
getString(R.string.error_digit).plural(size))
|
resources.getQuantityString(R.plurals.error_digit, size))
|
||||||
}
|
}
|
||||||
|
|
||||||
return isValid
|
return isValid
|
||||||
|
|
|
@ -41,7 +41,6 @@ import net.thauvin.erik.android.tesremoteprogrammer.filters.NumberFilter
|
||||||
import net.thauvin.erik.android.tesremoteprogrammer.models.Option
|
import net.thauvin.erik.android.tesremoteprogrammer.models.Option
|
||||||
import net.thauvin.erik.android.tesremoteprogrammer.models.Params
|
import net.thauvin.erik.android.tesremoteprogrammer.models.Params
|
||||||
import net.thauvin.erik.android.tesremoteprogrammer.util.Dtmf
|
import net.thauvin.erik.android.tesremoteprogrammer.util.Dtmf
|
||||||
import net.thauvin.erik.android.tesremoteprogrammer.util.plural
|
|
||||||
import net.thauvin.erik.android.tesremoteprogrammer.widget.ScrollAwareFABBehavior
|
import net.thauvin.erik.android.tesremoteprogrammer.widget.ScrollAwareFABBehavior
|
||||||
import org.jetbrains.anko.*
|
import org.jetbrains.anko.*
|
||||||
import org.jetbrains.anko.custom.ankoView
|
import org.jetbrains.anko.custom.ankoView
|
||||||
|
@ -230,7 +229,7 @@ class ProgrammingActivity : AppCompatActivity(), AnkoLogger {
|
||||||
val size = option.fields[i].size
|
val size = option.fields[i].size
|
||||||
if (!option.fields[i].alpha && size > 0 && (v.length() != size)) {
|
if (!option.fields[i].alpha && size > 0 && (v.length() != size)) {
|
||||||
v.error = getString(R.string.error_invalid_size, size,
|
v.error = getString(R.string.error_invalid_size, size,
|
||||||
getString(R.string.error_digit).plural(size))
|
resources.getQuantityString(R.plurals.error_digit, size))
|
||||||
isValid = false
|
isValid = false
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,24 +17,6 @@
|
||||||
*/
|
*/
|
||||||
package net.thauvin.erik.android.tesremoteprogrammer.util
|
package net.thauvin.erik.android.tesremoteprogrammer.util
|
||||||
|
|
||||||
fun String.plural(size: Int): String {
|
|
||||||
val consonants = "bcdfghjklmnpqrstvwxz"
|
|
||||||
|
|
||||||
if (size > 1 && this.length > 2) {
|
|
||||||
if ((this.endsWith("o", true) || this.endsWith("s", true)) &&
|
|
||||||
consonants.contains(this[this.length - 2], true)) {
|
|
||||||
return this + "es"
|
|
||||||
}
|
|
||||||
|
|
||||||
if (this.endsWith("y", true) &&
|
|
||||||
consonants.contains(this[this.length - 2], true)) {
|
|
||||||
return this + "ies"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return this + "s"
|
|
||||||
}
|
|
||||||
|
|
||||||
fun String.replaceAll(replace: Array<Pair<String, String>>): String {
|
fun String.replaceAll(replace: Array<Pair<String, String>>): String {
|
||||||
val result = StringBuilder(this)
|
val result = StringBuilder(this)
|
||||||
var offset: Int
|
var offset: Int
|
||||||
|
|
|
@ -5,7 +5,10 @@
|
||||||
<string name="alert_config_error">Configuration Errors</string>
|
<string name="alert_config_error">Configuration Errors</string>
|
||||||
<string name="app_name">TES Remote Programmer</string>
|
<string name="app_name">TES Remote Programmer</string>
|
||||||
<string name="dialog_import">Import</string>
|
<string name="dialog_import">Import</string>
|
||||||
<string name="error_digit">digit</string>
|
<plurals name="error_digit">
|
||||||
|
<item quantity="one">digit</item>
|
||||||
|
<item quantity="other">digits</item>
|
||||||
|
</plurals>
|
||||||
<string name="error_invalid_dtmf">Invalid DTMF: <xliff:g id="type">%1$s</xliff:g></string>
|
<string name="error_invalid_dtmf">Invalid DTMF: <xliff:g id="type">%1$s</xliff:g></string>
|
||||||
<string name="error_invalid_field">Missing or invalid fields data.</string>
|
<string name="error_invalid_field">Missing or invalid fields data.</string>
|
||||||
<string name="error_invalid_size">Invalid: <xliff:g id="size">%1$d</xliff:g> <xliff:g id="type">%2$s</xliff:g> required</string>
|
<string name="error_invalid_size">Invalid: <xliff:g id="size">%1$d</xliff:g> <xliff:g id="type">%2$s</xliff:g> required</string>
|
||||||
|
@ -20,6 +23,6 @@
|
||||||
<string name="validate_invalid_param"><p><b>params</b>: <font color=\"red\"><xliff:g id="param">%1$s</xliff:g></font> invalid</p></string>
|
<string name="validate_invalid_param"><p><b>params</b>: <font color=\"red\"><xliff:g id="param">%1$s</xliff:g></font> invalid</p></string>
|
||||||
<string name="validate_missing_fields"><p><b>opts[<xliff:g id="opts">%1$d</xliff:g>]</b>: <font color=\"red\">fields</font> missing</string>
|
<string name="validate_missing_fields"><p><b>opts[<xliff:g id="opts">%1$d</xliff:g>]</b>: <font color=\"red\">fields</font> missing</string>
|
||||||
<string name="validate_missing_param"><p><p><b>params</b>: <font color=\"red\"><xliff:g id="param">%1$s</xliff:g></font> missing</p></string>
|
<string name="validate_missing_param"><p><p><b>params</b>: <font color=\"red\"><xliff:g id="param">%1$s</xliff:g></font> missing</p></string>
|
||||||
<string name="validate_missing_opts"><font color=\"red\">opts</font> missing.</string>
|
<string name="validate_missing_opts"><p><font color=\"red\">opts</font> missing.</p></string>
|
||||||
<string name="validate_unused_field"><b>opts[<xliff:g id="opts">%1$d</xliff:g>]</b>, <font color=\"red\">fields[<xliff:g id="field">%2$d</xliff:g>]</font>: unused</string>
|
<string name="validate_unused_field"><p><b>opts[<xliff:g id="opts">%1$d</xliff:g>]</b>, <font color=\"red\">fields[<xliff:g id="field">%2$d</xliff:g>]</font>: unused</p></string>
|
||||||
</resources>
|
</resources>
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue