Compare commits

..

15 Commits

Author SHA1 Message Date
Patrick Goldinger
63ed46ccf4 Release v0.1.1 2020-08-09 20:43:01 +02:00
Patrick Goldinger
236f682622 Fix LayoutManager incorrectly merging main and mod layout
- Related to issue mentioned in #6
2020-08-09 20:23:27 +02:00
Patrick Goldinger
bef69b3187 Merge pull request #6 from PHELAT/master
Add support for persian keyboard layout
2020-08-09 20:14:03 +02:00
Mahdi Nouri
235224aefd Move the delete key back to the modifier layout 2020-08-09 16:54:09 +04:30
qw123wh
2489872589 Add Italian PlayStore translation by Qw123wh (#5)
- Update full_description.txt
- Add files via upload
- Update full_description.txt
2020-08-09 09:35:53 +02:00
Mahdi Nouri
33a9504707 Add support for persian layout 2020-08-08 18:46:45 +04:30
Mahdi Nouri
0fb7bbb034 Add support for half-space key with an appropriate icon 2020-08-08 17:53:37 +04:30
Mahdi Nouri
beef54941f Add the ability to load a customized layout modifier for each layout 2020-08-08 16:58:49 +04:30
Patrick Goldinger
634ff4972d Show number row in Smartbar if composing word suggestions is disabled 2020-08-08 11:27:22 +02:00
Patrick Goldinger
52f3477e24 Merge branch 'master' of https://github.com/florisboard/florisboard 2020-08-07 21:24:29 +02:00
Patrick Goldinger
1086464b09 Add string resources for preferences items / Fix apostrophe issues 2020-08-07 21:24:10 +02:00
Patrick Goldinger
2e4267aad4 Update full_description.txt
- Add supported keyboard layouts to the list
2020-08-07 19:07:48 +02:00
Patrick Goldinger
b14fe8ad03 Merge pull request #4 from qw123wh/qw123wh--italian-translate
Add Italian translation
2020-08-07 17:42:00 +02:00
qw123wh
82d6141fb2 Italian translation
Add Italian translation
2020-08-07 14:48:41 +02:00
Patrick Goldinger
e0e7bcc08a Split strings.xml into translatable and non-translatable file
- Done to easily identify which strings should be localized and which not
- Add translating guide in CONTRIBUTING.md
2020-08-06 23:08:27 +02:00
20 changed files with 442 additions and 90 deletions

View File

@@ -20,13 +20,53 @@ configs because some features and structures may change, please do not add this
kind of content yet. As FlorisBoard's state progresses and its core stabilizes,
you will be able to add keyboard layouts.
## Translating FlorisBoard
Before starting to translate, when adding a new translation please file
an issue stating that you want to translate FlorisBoard into a language.
Once this gets approved you can start translating. When updating an
already existing translation file you can just send a PR directly.
If you are not familiar with PRs, check out this guide:
[https://www.gun.io/blog/how-to-github-fork-branch-and-pull-request](https://www.gun.io/blog/how-to-github-fork-branch-and-pull-request)
Notes for tips below:
- Replace `<language>` with the language you want to add
- Replace `<code>` with the ISO 639-1 code of the language you want to
add
([List of codes](https://en.wikipedia.org/wiki/List_of_ISO_639-1_codes))
### Tips when adding a new translation
- To add the new translation file, navigate to `app/src/main/res/values`
and copy the file `strings.xml` into the folder
`app/src/main/res/values-<code>` (you have to create this folder)
- Translate only the phrases inside the brackets, leave the name
attribute as it is
E.g.: `<string name="hello_string">Hello World!</string>`
`<string name="hello_string">Ciao mondo!</string>`
- When finished translating, commit your changes locally, as the commit
message use `Add <language> translation`
- Push your change(s) and create the PR. When everything checks out, it
will get accepted.
### Tips when updating a translation
- To update a translation, check the `strings.xml` in
`app/src/main/res/values` for newly added strings and add them to the
translation file in `app/src/main/res/values-<code>`
- When finished translating, commit your changes locally, as the commit
message use `Update <language> translation`
- Push your change(s) and create the PR. When everything checks out, it
will get accepted.
## Bug reporting
This kind of contribution is the most important, as it tells where FlorisBoard
has flaws and thus should be imroved to maximize stability and user experience.
To make this process as smooth as possible, please use the premade [issue
template](.github/ISSUE_TEMPLATE/bug_report.md) for bug reporting. This makes it
easy for us to understand what the bug is and how to solve it.
This kind of contribution is the most important, as it tells where
FlorisBoard has flaws and thus should be improved to maximize stability
and user experience. To make this process as smooth as possible, please
use the premade [issue template](.github/ISSUE_TEMPLATE/bug_report.md)
for bug reporting. This makes it easy for us to understand what the bug
is and how to solve it.
### Capturing ADB debug logs

View File

@@ -10,8 +10,8 @@ android {
applicationId "dev.patrickgold.florisboard"
minSdkVersion 23
targetSdkVersion 29
versionCode 9
versionName "0.1.0"
versionCode 10
versionName "0.1.1"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}

View File

@@ -11,7 +11,8 @@
"icelandic": "Icelandic (QWERTY)",
"swiss_german": "Swiss German (QWERTZ)",
"swiss_french": "Swiss French (QWERTZ)",
"swiss_italian": "Swiss Italian (QWERTZ)"
"swiss_italian": "Swiss Italian (QWERTZ)",
"persian": "Persian"
},
"defaultSubtypes": [
{
@@ -174,6 +175,13 @@
"preferredLayout": "icelandic",
"isAsciiCapable": true,
"isEmojiCapable": true
},
{
"id": 800,
"languageTag": "fa-FA",
"preferredLayout": "persian",
"isAsciiCapable": true,
"isEmojiCapable": true
}
]
}

View File

@@ -0,0 +1,79 @@
{
"ض": [
{ "code": 1777, "label": "۱" }
],
"ص": [
{ "code": 1778, "label": "۲" }
],
"ث": [
{ "code": 1779, "label": "۳" }
],
"ق": [
{ "code": 1780, "label": "۴" }
],
"ف": [
{ "code": 1781, "label": "۵" }
],
"غ": [
{ "code": 1782, "label": "۶" }
],
"ع": [
{ "code": 1783, "label": "۷" }
],
"ه": [
{ "code": 1784, "label": "۸" }
],
"خ": [
{ "code": 1785, "label": "۹" }
],
"ح": [
{ "code": 1776, "label": "۰" }
],
"ی": [
{ "code": 1574, "label": "ئ" },
{ "code": 1610, "label": "ي" }
],
"ا": [
{ "code": 1649, "label": "ٱ" },
{ "code": 1569, "label": "ء" },
{ "code": 1570, "label": "آ" },
{ "code": 1571, "label": "أ" },
{ "code": 1573, "label": "إ" }
],
"ت": [
{ "code": 1577, "label": "ة" }
],
"ک": [
{ "code": 1603, "label": "ك" }
],
"ز": [
{ "code": 1688, "label": "ژ" }
],
"و": [
{ "code": 1572, "label": "ؤ" }
],
".~normal": [
{ "code": 1622, "label": "ٖ" },
{ "code": 1648, "label": "ٰ" },
{ "code": 1619, "label": "ٓ" },
{ "code": 1615, "label": "ُ" },
{ "code": 1616, "label": "ِ" },
{ "code": 1614, "label": "َ" },
{ "code": 1600, "label": "ـ" },
{ "code": 1621, "label": "ٕ" },
{ "code": 1618, "label": "ْ" },
{ "code": 1617, "label": "ّ" },
{ "code": 1612, "label": "ٌ" },
{ "code": 1613, "label": "ٍ" },
{ "code": 1611, "label": "ً" },
{ "code": 1620, "label": "ٔ" }
],
".~uri": [
{ "code": -255, "label": ".gov" },
{ "code": -255, "label": ".edu" },
{ "code": -255, "label": ".org" },
{ "code": -255, "label": ".com" },
{ "code": -255, "label": ".net" },
{ "code": -255, "label": ".ir"}
]
}

View File

@@ -0,0 +1,33 @@
{
"type": "characters/mod",
"name": "persian",
"direction": "rtl",
"arrangement": [
[
{ "code": 0 },
{ "code": -5, "label": "delete", "type": "enter_editing" }
],
[
{ "code": -202, "label": "view_symbols", "type": "system_gui" },
{ "code": 64, "label": "@", "variation": "email_address" },
{ "code": 1548, "label": "،", "variation": "normal" },
{ "code": 47, "label": "/", "variation": "uri" },
{ "code": -210, "label": "language_switch", "type": "system_gui", "popup": [
{ "code": -213, "label": "switch_to_media_context", "type": "system_gui" },
{ "code": -100, "label": "settings", "type": "system_gui" }
] },
{ "code": -213, "label": "switch_to_media_context", "type": "system_gui", "popup": [
{ "code": -100, "label": "settings", "type": "system_gui" }
] },
{ "code": 32, "label": " " },
{ "code": 8204, "label": "half_space", "variation": "normal" },
{ "code": 46, "label": ".", "variation": "email_address" },
{ "code": 46, "label": ".", "variation": "normal" },
{ "code": 46, "label": ".", "variation": "uri" },
{ "code": 10, "label": "enter", "type": "enter_editing", "popup": [
{ "code": -215, "label": "toggle_one_handed_mode", "type": "system_gui" },
{ "code": -213, "label": "switch_to_media_context", "type": "system_gui" }
] }
]
]
}

View File

@@ -0,0 +1,45 @@
{
"type": "characters",
"name": "persian",
"direction": "rtl",
"modifier": "persian",
"arrangement": [
[
{ "code": 1590, "label": "ض" },
{ "code": 1589, "label": "ص" },
{ "code": 1579, "label": "ث" },
{ "code": 1602, "label": "ق" },
{ "code": 1601, "label": "ف" },
{ "code": 1594, "label": "غ" },
{ "code": 1593, "label": "ع" },
{ "code": 1607, "label": "ه" },
{ "code": 1582, "label": "خ" },
{ "code": 1581, "label": "ح" },
{ "code": 1580, "label": "ج" }
],
[
{ "code": 1588, "label": "ش" },
{ "code": 1587, "label": "س" },
{ "code": 1740, "label": "ی" },
{ "code": 1576, "label": "ب" },
{ "code": 1604, "label": "ل" },
{ "code": 1575, "label": "ا" },
{ "code": 1578, "label": "ت" },
{ "code": 1606, "label": "ن" },
{ "code": 1605, "label": "م" },
{ "code": 1705, "label": "ک" },
{ "code": 1711, "label": "گ" }
],
[
{ "code": 1592, "label": "ظ" },
{ "code": 1591, "label": "ط" },
{ "code": 1586, "label": "ز" },
{ "code": 1585, "label": "ر" },
{ "code": 1584, "label": "ذ" },
{ "code": 1583, "label": "د" },
{ "code": 1662, "label": "پ" },
{ "code": 1608, "label": "و" },
{ "code": 1670, "label": "چ" }
]
]
}

View File

@@ -233,6 +233,7 @@ class TextInputManager private constructor() : CoroutineScope by MainScope(),
override fun onWindowShown() {
keyboardViews[KeyboardMode.CHARACTERS]?.updateVisibility()
smartbarManager.onWindowShown()
}
/**
@@ -245,7 +246,7 @@ class TextInputManager private constructor() : CoroutineScope by MainScope(),
}
/**
* Sets [activeKeyboardMode] and updates the [SmartbarManager.activeContainerId].
* Sets [activeKeyboardMode] and updates the [SmartbarManager.isQuickActionsVisible].
*/
private fun setActiveKeyboardMode(mode: KeyboardMode) {
textViewFlipper?.displayedChild =
@@ -254,7 +255,7 @@ class TextInputManager private constructor() : CoroutineScope by MainScope(),
keyboardViews[mode]?.requestLayout()
keyboardViews[mode]?.requestLayoutAllKeys()
activeKeyboardMode = mode
smartbarManager.activeContainerId = smartbarManager.getPreferredContainerId()
smartbarManager.isQuickActionsVisible = false
}
override fun onSubtypeChanged(newSubtype: Subtype) {

View File

@@ -69,4 +69,6 @@ object KeyCode {
const val SWITCH_TO_CLIPBOARD_CONTEXT = -214
const val TOGGLE_ONE_HANDED_MODE = -215
const val URI_COMPONENT_TLD = -255
const val HALF_SPACE = 8204
}

View File

@@ -426,7 +426,7 @@ class KeyView(
updateKeyPressedBackground()
if (data.type == KeyType.CHARACTER && data.code != KeyCode.SPACE
|| data.type == KeyType.NUMERIC
&& data.code != KeyCode.HALF_SPACE || data.type == KeyType.NUMERIC
) {
label = getComputedLetter()
} else {
@@ -513,6 +513,9 @@ class KeyView(
KeyCode.VIEW_SYMBOLS2 -> {
label = resources.getString(R.string.key__view_symbols2)
}
KeyCode.HALF_SPACE -> {
label = resources.getString(R.string.key__view_half_space)
}
}
}

View File

@@ -24,6 +24,7 @@ data class LayoutData(
val type: LayoutType,
val name: String,
val direction: String,
val modifier: String?,
val arrangement: LayoutDataArrangement = listOf()
) {
private fun getComputedLayoutDataArrangement(): ComputedLayoutDataArrangement {

View File

@@ -120,7 +120,12 @@ class LayoutManager(private val context: Context) : CoroutineScope by MainScope(
val computedArrangement: ComputedLayoutDataArrangement = mutableListOf()
val mainLayout = loadLayout(main)
val modifierLayout = loadLayout(modifier)
val modifierToLoad = if (mainLayout?.modifier != null) {
LTN(LayoutType.CHARACTERS_MOD, mainLayout.modifier)
} else {
modifier
}
val modifierLayout = loadLayout(modifierToLoad)
val extensionLayout = loadLayout(extension)
if (extensionLayout != null) {
@@ -139,14 +144,12 @@ class LayoutManager(private val context: Context) : CoroutineScope by MainScope(
// merge main and mod here
val mergedRow = mutableListOf<KeyData>()
val firstModRow = modifierLayout.arrangement.firstOrNull()
val firstModKey = firstModRow?.firstOrNull()
if (firstModKey != null) {
mergedRow.add(firstModKey)
}
mergedRow.addAll(mainRow)
val lastModKey = firstModRow?.lastOrNull()
if (lastModKey != null && firstModKey != lastModKey) {
mergedRow.add(lastModKey)
for (modKey in (firstModRow ?: listOf())) {
if (modKey.code == 0) {
mergedRow.addAll(mainRow)
} else {
mergedRow.add(modKey)
}
}
computedArrangement.add(mergedRow)
}

View File

@@ -30,7 +30,7 @@ class SmartbarManager private constructor() :
var smartbarView: SmartbarView? = null
private set
var activeContainerId: Int = R.id.candidates
var isQuickActionsVisible: Boolean = false
set(value) { field = value; updateActiveContainerVisibility() }
private val candidateViewOnClickListener = View.OnClickListener { v ->
@@ -60,21 +60,16 @@ class SmartbarManager private constructor() :
florisboard.textInputManager.sendKeyPress(keyData)
}
private val quickActionOnClickListener = View.OnClickListener { v ->
isQuickActionsVisible = false
when (v.id) {
R.id.quick_action_switch_to_media_context -> {
activeContainerId = getPreferredContainerId()
florisboard.setActiveInput(R.id.media_input)
}
R.id.quick_action_switch_to_media_context -> florisboard.setActiveInput(R.id.media_input)
R.id.quick_action_open_settings -> florisboard.launchSettings()
R.id.quick_action_one_handed_toggle -> florisboard.toggleOneHandedMode()
else -> return@OnClickListener
}
}
private val quickActionToggleOnClickListener = View.OnClickListener {
activeContainerId = when (activeContainerId) {
R.id.quick_actions -> getPreferredContainerId()
else -> R.id.quick_actions
}
isQuickActionsVisible = !isQuickActionsVisible
}
companion object {
@@ -113,6 +108,10 @@ class SmartbarManager private constructor() :
}
}
override fun onWindowShown() {
isQuickActionsVisible = false
}
// TODO: clean up resources here
override fun onDestroy() {
if (BuildConfig.DEBUG) Log.i(this::class.simpleName, "onDestroy()")
@@ -148,21 +147,13 @@ class SmartbarManager private constructor() :
fun onStartInputView(keyboardMode: KeyboardMode, isComposingEnabled: Boolean) {
this.isComposingEnabled = isComposingEnabled
when {
keyboardMode == KeyboardMode.NUMERIC ||
keyboardMode == KeyboardMode.PHONE ||
keyboardMode == KeyboardMode.PHONE2 -> {
when (keyboardMode) {
KeyboardMode.NUMERIC, KeyboardMode.PHONE, KeyboardMode.PHONE2 -> {
smartbarView?.visibility = View.GONE
}
!isComposingEnabled -> {
smartbarView?.visibility = View.VISIBLE
activeContainerId = R.id.number_row
}
else -> {
smartbarView?.visibility = View.VISIBLE
activeContainerId = R.id.candidates
//val tsm = florisboard.getSystemService(Context.TEXT_SERVICES_MANAGER_SERVICE) as TextServicesManager
//spellCheckerSession = tsm.newSpellCheckerSession(null, null, this, true)
isQuickActionsVisible = false
}
}
}
@@ -187,8 +178,6 @@ class SmartbarManager private constructor() :
smartbarView.candidateViewList[1].text = "suggestions"
smartbarView.candidateViewList[2].text = "nyi"
} else {
activeContainerId = R.id.candidates
updateActiveContainerVisibility()
smartbarView.candidateViewList[0].text = ""
smartbarView.candidateViewList[1].text = composingText + "test"
smartbarView.candidateViewList[2].text = ""
@@ -226,31 +215,26 @@ class SmartbarManager private constructor() :
private fun updateActiveContainerVisibility() {
val smartbarView = smartbarView ?: return
when (activeContainerId) {
R.id.quick_actions -> {
smartbarView.candidatesView?.visibility = View.GONE
smartbarView.numberRowView?.visibility = View.GONE
smartbarView.quickActionsView?.visibility = View.VISIBLE
smartbarView.quickActionToggle?.rotation = -180.0f
}
R.id.number_row -> {
smartbarView.candidatesView?.visibility = View.GONE
smartbarView.numberRowView?.visibility = View.VISIBLE
smartbarView.quickActionsView?.visibility = View.GONE
smartbarView.quickActionToggle?.rotation = 0.0f
}
R.id.candidates -> {
if (isQuickActionsVisible) {
smartbarView.candidatesView?.visibility = View.GONE
smartbarView.numberRowView?.visibility = View.GONE
smartbarView.quickActionsView?.visibility = View.VISIBLE
smartbarView.quickActionToggle?.rotation = -180.0f
} else {
if (florisboard.prefs.suggestion.enabled) {
smartbarView.candidatesView?.visibility = View.VISIBLE
smartbarView.numberRowView?.visibility = View.GONE
smartbarView.quickActionsView?.visibility = View.GONE
smartbarView.quickActionToggle?.rotation = 0.0f
}
else -> {
} else if (textInputManager.getActiveKeyboardMode() == KeyboardMode.CHARACTERS) {
smartbarView.candidatesView?.visibility = View.GONE
smartbarView.numberRowView?.visibility = View.VISIBLE
smartbarView.quickActionsView?.visibility = View.GONE
} else {
smartbarView.candidatesView?.visibility = View.GONE
smartbarView.numberRowView?.visibility = View.GONE
smartbarView.quickActionsView?.visibility = View.GONE
smartbarView.quickActionToggle?.rotation = 0.0f
}
smartbarView.quickActionToggle?.rotation = 0.0f
}
}
}

View File

@@ -0,0 +1,117 @@
<resources>
<string name="key__phone_pause">Pausa</string>
<string name="key__phone_wait">Attendi</string>
<string name="key_popup__threedots_alt">Icona a tre puntini.Se visibile, indica che è possibile utilizzare più lettere se premuto a lungo.</string>
<!-- Media strings -->
<string name="media__tab__emojis">Emojis</string>
<string name="media__tab__emoticons">Emoticons</string>
<string name="media__tab__kaomoji">Kaomoji</string>
<!-- Emoji strings -->
<string name="emoji__category__smileys_emotion">Smileys &amp; Emotions</string>
<string name="emoji__category__people_body">Persone &amp; Corpo</string>
<string name="emoji__category__animals_nature">Animali &amp; Natura</string>
<string name="emoji__category__food_drink">Cibo &amp; Bevande</string>
<string name="emoji__category__travel_places">Viaggi &amp; Luoghi</string>
<string name="emoji__category__activities">Attività</string>
<string name="emoji__category__objects">Oggetti</string>
<string name="emoji__category__symbols">Simboli</string>
<string name="emoji__category__flags">Bandiere</string>
<!-- Smartbar strings -->
<string name="smartbar__quick_action_toggle__alt">Attiva / disattiva azione rapida. Se premuto, alterna i suggerimenti di parole ed i pulsanti di azione rapida.</string>
<string name="smartbar__quick_action__one_handed_mode">Attiva / disattiva la modalità a una mano.</string>
<string name="smartbar__quick_action__open_settings">Apri Impostazioni.</string>
<string name="smartbar__quick_action__switch_to_media_context">Passa alla visualizzazione dei media.</string>
<!-- Settings UI strings -->
<string name="settings__title">Impostazioni</string>
<string name="settings__menu">Altre opzioni</string>
<string name="settings__menu_about">Informazioni su</string>
<string name="settings__menu_help">Aiuto &amp; feedback</string>
<string name="settings__navigation__home">Home</string>
<string name="settings__navigation__keyboard">Tastiera</string>
<string name="settings__navigation__looknfeel">Aspetto &amp; funzionalità</string>
<string name="settings__navigation__gestures">Gesti</string>
<string name="settings__navigation__advanced">Avanzate</string>
<string name="settings__home__title">Benvenuto in %s</string>
<string name="settings__home__ime_not_enabled">FlorisBoard non è abilitato nel sistema e quindi non sarà disponibile come metodo di immissione.Clicca quì per risolvere questo problema.</string>
<string name="settings__home__ime_not_selected">FlorisBoard non è la tastiera predefinita. Clicca quì per risolvere questo problema.</string>
<string name="settings__home__contribute">Grazie per aver provato FlorisBoard! Questo progetto è ancora in fase alfa e quindi manca di alcune funzionalità. Se trovate qualche bug o volete dare un suggerimento, date un\'occhiata al repo su GitHub e segnalate un problema. Questo aiuta a rendere FlorisBoard migliore. Grazie!</string>
<string name="settings__keyboard__title">Tastiera &amp; Correzione del testo</string>
<string name="settings__keyboard__subtype_no_subtypes_configured_warning">Sembra che tu non abbia configurato nessuno stile di input personalizzato. Come ripiego verrà utilizzato lo stile input English/QWERTY!</string>
<string name="settings__keyboard__subtype_add">Aggiungi</string>
<string name="settings__keyboard__subtype_add_title">Aggiungi stile input</string>
<string name="settings__keyboard__subtype_apply">Applica</string>
<string name="settings__keyboard__subtype_cancel">Annulla</string>
<string name="settings__keyboard__subtype_delete">Elimina</string>
<string name="settings__keyboard__subtype_edit_title">Modifica stile di input</string>
<string name="settings__keyboard__subtype_locale">Locale</string>
<string name="settings__keyboard__subtype_layout">Layout della tastiera</string>
<string name="settings__keyboard__subtype_error_already_exists">Questo stile di input esiste già !</string>
<string name="pref__suggestion__title">Suggerimenti</string>
<string name="pref__suggestion__enabled__label">Visualizza suggerimenti mentre digiti</string>
<string name="pref__suggestion__enabled__summary">Verrà visualizzato nella parte superiore della tastiera</string>
<string name="pref__suggestion__use_pref_words__label">Suggerimenti per la parola successiva</string>
<string name="pref__suggestion__use_pref_words__summary">Utilizzare le parole precedenti per generare suggerimenti</string>
<string name="pref__correction__title">Correzioni</string>
<string name="pref__correction__double_space_period__label">Doppio tocco barra spaziatrice</string>
<string name="pref__correction__double_space_period__summary">Doppio tocco su barra spaziatrice per mettere il punto (.) seguito da uno spazio</string>
<string name="settings__looknfeel__title">Aspetto &amp; funzionalità</string>
<string name="pref__looknfeel__group_layout__label">Layout</string>
<string name="pref__looknfeel__height_factor__label">Altezza tastiera</string>
<string name="pref__looknfeel__one_handed_mode__label">Modalità ad una mano</string>
<string name="pref__looknfeel__group_keypress__label">Pressione tasti</string>
<string name="pref__looknfeel__long_press_delay__label">Ritardo lunga pressione tasti</string>
<string name="pref__looknfeel__sound_enabled__label">Suono pressione tasti</string>
<string name="pref__looknfeel__sound_volume__label">Volume del suono alla pressione dei tasti</string>
<string name="pref__looknfeel__vibration_enabled__label">Vibrazione alla pressione dei tasti</string>
<string name="pref__looknfeel__vibration_strength__label">Intensità della vibrazione alla pressione dei tasti</string>
<string name="pref__theme__name__label">Tema tastiera</string>
<string name="settings__gestures__title">Gesti</string>
<string name="settings__advanced__title">Avanzate</string>
<string name="pref__advanced__settings_theme__label">Impostazioni tema</string>
<string name="pref__advanced__show_app_icon__label">Mostra icona nel launcher</string>
<!-- About UI strings -->
<string name="about__title">Informazioni su</string>
<string name="about__app_icon_content_description">Icona dell\'app FlorisBoard</string>
<string name="about__view_licenses">Licenze open source</string>
<string name="about__view_privacy_policy">Norme sulla privacy</string>
<string name="about__view_source_code">Codice sorgente</string>
<string name="about__license__title">Licenze open source</string>
<!-- Setup UI strings -->
<string name="setup__title">Configurazione</string>
<string name="setup__prev_button">Precedente</string>
<string name="setup__cancel_button">Annulla</string>
<string name="setup__next_button">Avanti</string>
<string name="setup__finish_button">Fine</string>
<string name="setup__ok_button">OK</string>
<string name="setup__welcome__title">Benvenuto!</string>
<string name="setup__welcome__intro">TGrazie per aver provato FlorisBoard! Prima che possiate iniziare ad usarlo, dobbiamo fare le solite cose e abilitarlo nelle impostazioni di sistema, impostare la vostra lingua/ il layout preferito, ecc... Ma non preoccuparti: segui questa procedura guidata </string>
<string name="setup__welcome__privacy">[[ TODO: inserisci quì la descrizione della privacy ]]</string>
<string name="setup__welcome__trust">Il codice sorgente di FlorisBoard è accessibile pubblicamente a chiunque, quindi puoi facilmente rivedere cosa fa FlorisBoard in background. Controlla il link nel repository in basso.</string>
<string name="setup__welcome__contribute">Un\'ultima cosa prima di iniziare l\'installazione - se riscontri errori / arresti anomali / problemi con FlorisBoard o hai una richiesta di funzionalità - vai al repository GitHub collegato di seguito e presenta un problema. Questo aiuta a migliorare l\'esperienza per tutti gli utenti!</string>
<string name="setup__welcome__outro">Per avviare l\'installazione, fai clic su <i>AVANTI</i>.</string>
<string name="setup__enable_ime__title">Abilita FlorisBoard</string>
<string name="setup__enable_ime__text_before_enabled">Android richiede che ogni tastiera personalizzata debba essere abilitata manualmente prima di poterla utilizzare. Fai clic sul pulsante in basso per passare a <i>Lingua &amp; Input</i>impostazioni, quindi assicurati di selezionare\'<i>FlorisBoard</i>\'.</string>
<string name="setup__enable_ime__text_button_language_and_input">Apri lingue &amp; Impostazioni di input</string>
<string name="setup__enable_ime__text_after_enabled">FlorisBoard è stato abilitato con successo. Per continuare, fai clic su <i>AVANTI</i>!</string>
<string name="setup__make_default__title">Rendi FlorisBoard predefinita</string>
<string name="setup__make_default__text_before_switch">FlorisBoard è ora abilitato nel tuo sistema. Per usarlo attivamente, passa a FlorisBoard selezionandolo nella finestra di dialogo del selettore di input!</string>
<string name="setup__make_default__text_switch_button">Cambia tastiera</string>
<string name="setup__make_default__text_after_switch">Hai cambiato con successo la tastiera predefinita su FlorisBoard!</string>
<string name="setup__finish__title">Installazione terminata!</string>
</resources>

View File

@@ -1,13 +1,13 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="pref__looknfeel__height_factor__entries">
<item>Extra-short</item>
<item>Short</item>
<item>Mid-short</item>
<item>Normal</item>
<item>Mid-tall</item>
<item>Tall</item>
<item>Extra-tall</item>
<item>@string/pref__looknfeel__height_factor__extra_short</item>
<item>@string/pref__looknfeel__height_factor__short</item>
<item>@string/pref__looknfeel__height_factor__mid_short</item>
<item>@string/pref__looknfeel__height_factor__normal</item>
<item>@string/pref__looknfeel__height_factor__mid_tall</item>
<item>@string/pref__looknfeel__height_factor__tall</item>
<item>@string/pref__looknfeel__height_factor__extra_tall</item>
</string-array>
<string-array name="pref__looknfeel__height_factor__values">
<item>extra_short</item>
@@ -20,9 +20,9 @@
</string-array>
<string-array name="pref__looknfeel__one_handed_mode__entries">
<item>Off</item>
<item>Right-handed mode</item>
<item>Left-handed mode</item>
<item>@string/pref__looknfeel__one_handed_mode__off</item>
<item>@string/pref__looknfeel__one_handed_mode__right</item>
<item>@string/pref__looknfeel__one_handed_mode__left</item>
</string-array>
<string-array name="pref__looknfeel__one_handed_mode__values">
<item>off</item>
@@ -31,9 +31,9 @@
</string-array>
<string-array name="pref__advanced__settings_theme__entries">
<item>System default</item>
<item>Light</item>
<item>Dark</item>
<item>@string/settings__system_default</item>
<item>@string/pref__advanced__settings_theme__light</item>
<item>@string/pref__advanced__settings_theme__dark</item>
</string-array>
<string-array name="pref__advanced__settings_theme__values">
<item>auto</item>

View File

@@ -1,26 +1,12 @@
<resources>
<string name="app_name" translatable="false">FlorisBoard</string>
<string name="florisboard__repo_url" translatable="false">https://github.com/florisboard/florisboard</string>
<string name="florisboard__privacy_policy_url" translatable="false">https://gist.github.com/patrickgold/a18f1e47468d72f0868afc69d6faaf0b</string>
<string name="key__phone_pause">Pause</string>
<string name="key__phone_wait">Wait</string>
<string name="key__view_characters">ABC</string>
<string name="key__view_numeric">1 2\n3 4</string>
<string name="key__view_phone">123</string>
<string name="key__view_phone2">* #</string>
<string name="key__view_symbols">\?123</string>
<string name="key__view_symbols2">=\\&lt;</string>
<string name="key_popup__threedots_alt">Three-dot icon. If visible, indicates that more letters can be used if longer pressed.</string>
<!-- Media strings -->
<string name="media__tab__emojis">Emojis</string>
<string name="media__tab__emoticons">Emoticons</string>
<string name="media__tab__emoticons_label">;-)</string>
<string name="media__tab__kaomoji">Kaomoji</string>
<string name="media__tab__kaomoji_label">(^-^*)/</string>
<!-- Emoji strings -->
<string name="emoji__category__smileys_emotion">Smileys &amp; Emotions</string>
@@ -49,6 +35,7 @@
<string name="settings__navigation__looknfeel">Look &amp; feel</string>
<string name="settings__navigation__gestures">Gestures</string>
<string name="settings__navigation__advanced">Advanced</string>
<string name="settings__system_default">System default</string>
<string name="settings__home__title">Welcome to %s</string>
<string name="settings__home__ime_not_enabled">FlorisBoard is not enabled in the system and thus won\'t be available as an input method in the input picker. Click here to resolve this issue.</string>
@@ -67,7 +54,7 @@
<string name="settings__keyboard__subtype_layout">Keyboard layout</string>
<string name="settings__keyboard__subtype_error_already_exists">This subtype already exists!</string>
<string name="pref__suggestion__title">Suggestions</string>
<string name="pref__suggestion__enabled__label">[NYI] Display suggestions while you type</string>
<string name="pref__suggestion__enabled__label">Display suggestions while you type</string>
<string name="pref__suggestion__enabled__summary">Will show on top of the keyboard</string>
<string name="pref__suggestion__use_pref_words__label">[NYI] Next-word suggestions</string>
<string name="pref__suggestion__use_pref_words__summary">Use previous words for generating suggestions</string>
@@ -78,7 +65,17 @@
<string name="settings__looknfeel__title">Look &amp; feel</string>
<string name="pref__looknfeel__group_layout__label">Layout</string>
<string name="pref__looknfeel__height_factor__label">Keyboard height</string>
<string name="pref__looknfeel__height_factor__extra_short">Extra-short</string>
<string name="pref__looknfeel__height_factor__short">Short</string>
<string name="pref__looknfeel__height_factor__mid_short">Mid-short</string>
<string name="pref__looknfeel__height_factor__normal">Normal</string>
<string name="pref__looknfeel__height_factor__mid_tall">Mid-tall</string>
<string name="pref__looknfeel__height_factor__tall">Tall</string>
<string name="pref__looknfeel__height_factor__extra_tall">Extra-tall</string>
<string name="pref__looknfeel__one_handed_mode__label">One-handed mode</string>
<string name="pref__looknfeel__one_handed_mode__off">Off</string>
<string name="pref__looknfeel__one_handed_mode__right">Right-handed mode</string>
<string name="pref__looknfeel__one_handed_mode__left">Left-handed mode</string>
<string name="pref__looknfeel__group_keypress__label">Key press</string>
<string name="pref__looknfeel__long_press_delay__label">Long key press delay</string>
<string name="pref__looknfeel__sound_enabled__label">Sound on key press</string>
@@ -91,6 +88,8 @@
<string name="settings__advanced__title">Advanced</string>
<string name="pref__advanced__settings_theme__label">Settings theme</string>
<string name="pref__advanced__settings_theme__light">Light</string>
<string name="pref__advanced__settings_theme__dark">Dark</string>
<string name="pref__advanced__show_app_icon__label">Show app icon in launcher</string>
<!-- About UI strings -->

View File

@@ -0,0 +1,18 @@
<resources>
<string name="app_name" translatable="false">FlorisBoard</string>
<string name="florisboard__repo_url" translatable="false">https://github.com/florisboard/florisboard</string>
<string name="florisboard__privacy_policy_url" translatable="false">https://gist.github.com/patrickgold/a18f1e47468d72f0868afc69d6faaf0b</string>
<string name="key__view_characters" translatable="false">ABC</string>
<string name="key__view_numeric" translatable="false">1 2\n3 4</string>
<string name="key__view_phone" translatable="false">123</string>
<string name="key__view_phone2" translatable="false">* #</string>
<string name="key__view_symbols" translatable="false">\?123</string>
<string name="key__view_symbols2" translatable="false">=\\&lt;</string>
<string name="key__view_half_space" translatable="false">&#8626;</string>
<!-- Media strings -->
<string name="media__tab__emoticons_label" translatable="false">;-)</string>
<string name="media__tab__kaomoji_label" translatable="false">(^-^*)/</string>
</resources>

View File

@@ -4,7 +4,7 @@ Note: This project is currently in alpha stage. If you want to see a feature bei
Currently implemented and fully working features:
* Latin keyboard layouts
* QWERTY, QWERTZ, AZERTY, Spanish and Swiss. More coming in future releases
* QWERTY, QWERTZ, AZERTY, Spanish, Norwegian, Swedish/Finnish, Danish, Icelandic and Swiss. More coming in future releases
* Easy switching between languages/layouts by defining subtypes in the settings
* Keyboard layouts for typing in a (phone) number
* Special characters input
@@ -14,4 +14,4 @@ Currently implemented and fully working features:
* Customization of key press sound/vibration
Source code (Apache 2.0) and project management:
https://github.com/florisboard/florisboard
https://github.com/florisboard/florisboard

View File

@@ -0,0 +1,17 @@
FlorisBoard &egrave una tastiera open source mirata a fornirti un modo semplice per digitare nel rispetto della tua privacy.
Nota: questo progetto &egrave attualmente in fase alpha. Se desideri vedere una funzionalità implementata o segnalare un bug, visita il repository di questo progetto (link alla fine della descrizione) su GitHub e segnala un problema. Questo aiuta a rendere FlorisBoard ancora migliore! Grazie!
Funzionalit&agrave; attualmente implementate e completamente funzionanti:
* Layout della tastiera
* QWERTY, QWERTZ, AZERTY, Spagnolo, norvegese, svedese,finlandese, danese, islandese e svizzero. Altre novità in arrivo nelle versioni future
* Facile passaggio tra lingue / layout nelle impostazioni
* Layout di tastiera tipo tastierino telefonico per digitazione di un numero
* Inserimento di caratteri speciali
* Tastiera Emoji/Emoticon
* Modalit&agrave; con una sola mano per digitare più facilmente su dispositivi di grandi dimensioni
* Tema chiaro e scuro per l'interfaccia utente e per tastiera (altri temi arriveranno nelle versioni future)
* Personalizzazione del suono / vibrazione della pressione dei tasti
Codice sorgente (Apache 2.0) e gestione del progetto:
https://github.com/florisboard/florisboard

View File

@@ -0,0 +1 @@
Una tastiera open source. Attualmente in fase alfa.

View File

@@ -0,0 +1 @@
FlorisBoard