Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -152,15 +152,15 @@ class AboutUtilInstrumentedTest {
// Test specific items.
val githubItem = communityList.items[0] as ScribeItem.ExternalLinkItem
assertThat(githubItem.leadingIcon).isEqualTo(R.drawable.github_logo)
assertThat(githubItem.title).isEqualTo(R.string.app_about_community_github)
assertThat(githubItem.title).isEqualTo(R.string.i18n_app_about_community_github)

val shareItem = communityList.items[1] as ScribeItem.ExternalLinkItem
assertThat(shareItem.leadingIcon).isEqualTo(R.drawable.share_icon)
assertThat(shareItem.title).isEqualTo(R.string.app_about_community_share_scribe)
assertThat(shareItem.title).isEqualTo(R.string.i18n_app_about_community_share_scribe)

val wikimediaItem = communityList.items[2] as ScribeItem.ExternalLinkItem
assertThat(wikimediaItem.leadingIcon).isEqualTo(R.drawable.wikimedia_logo_black)
assertThat(wikimediaItem.title).isEqualTo(R.string.app_about_community_wikimedia)
assertThat(wikimediaItem.title).isEqualTo(R.string.i18n_app_about_community_wikimedia)

// Test onClick callbacks.
shareItem.onClick()
Expand Down Expand Up @@ -216,15 +216,15 @@ class AboutUtilInstrumentedTest {
// Test specific items.
val rateItem = feedbackList.items[0] as ScribeItem.ExternalLinkItem
assertThat(rateItem.leadingIcon).isEqualTo(R.drawable.star)
assertThat(rateItem.title).isEqualTo(R.string.app_about_feedback_rate_scribe)
assertThat(rateItem.title).isEqualTo(R.string.i18n_app_about_feedback_rate_scribe)

val mailItem = feedbackList.items[2] as ScribeItem.ExternalLinkItem
assertThat(mailItem.leadingIcon).isEqualTo(R.drawable.mail_icon)
assertThat(mailItem.title).isEqualTo(R.string.app_about_feedback_email)
assertThat(mailItem.title).isEqualTo(R.string.i18n_app_about_feedback_email)

val hintsItem = feedbackList.items[4] as ScribeItem.ExternalLinkItem
assertThat(hintsItem.leadingIcon).isEqualTo(R.drawable.light_bulb_icon)
assertThat(hintsItem.title).isEqualTo(R.string.app_about_feedback_app_hints)
assertThat(hintsItem.title).isEqualTo(R.string.i18n_app_about_feedback_app_hints)

// Test onClick callbacks.
rateItem.onClick()
Expand Down Expand Up @@ -279,12 +279,12 @@ class AboutUtilInstrumentedTest {
// Test specific items.
val privacyItem = legalList.items[0] as ScribeItem.ExternalLinkItem
assertThat(privacyItem.leadingIcon).isEqualTo(R.drawable.shield_lock)
assertThat(privacyItem.title).isEqualTo(R.string.app_about_legal_privacy_policy)
assertThat(privacyItem.title).isEqualTo(R.string.i18n_app_about_legal_privacy_policy)
assertThat(privacyItem.trailingIcon).isEqualTo(R.drawable.right_arrow)

val licenseItem = legalList.items[1] as ScribeItem.ExternalLinkItem
assertThat(licenseItem.leadingIcon).isEqualTo(R.drawable.license_icon)
assertThat(licenseItem.title).isEqualTo(R.string.app_about_legal_third_party)
assertThat(licenseItem.title).isEqualTo(R.string.i18n_app_about_legal_third_party)
assertThat(licenseItem.trailingIcon).isEqualTo(R.drawable.right_arrow)

// Test onClick callbacks.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,12 +52,12 @@ class ScribeItemListTest {
val items =
listOf(
ScribeItem.ClickableItem(
title = R.string.app_settings_menu_app_language,
desc = R.string.app_settings_menu_app_language_description,
title = R.string.i18n_app_settings_menu_app_language,
desc = R.string.i18n_app_settings_menu_app_language_description,
action = { },
),
ScribeItem.ClickableItem(
title = R.string.app_settings_keyboard_title,
title = R.string.i18n_app_settings_keyboard_title,
desc = null,
action = { },
),
Expand All @@ -76,13 +76,13 @@ class ScribeItemListTest {
val items =
listOf(
ScribeItem.SwitchItem(
title = R.string.app_settings_menu_app_color_mode,
desc = R.string.app_settings_menu_app_color_mode_description,
title = R.string.i18n_app_settings_menu_app_color_mode,
desc = R.string.i18n_app_settings_menu_app_color_mode_description,
state = false,
onToggle = { },
),
ScribeItem.SwitchItem(
title = R.string.app_settings_keyboard_title,
title = R.string.i18n_app_settings_keyboard_title,
desc = 0,
state = true,
onToggle = { },
Expand Down Expand Up @@ -114,8 +114,8 @@ class ScribeItemListTest {
val items =
listOf(
ScribeItem.ClickableItem(
title = R.string.app_settings_menu_app_language,
desc = R.string.app_settings_menu_app_language_description,
title = R.string.i18n_app_settings_menu_app_language,
desc = R.string.i18n_app_settings_menu_app_language_description,
action = { clicked = true },
),
)
Expand All @@ -134,8 +134,8 @@ class ScribeItemListTest {
val items =
listOf(
ScribeItem.SwitchItem(
title = R.string.app_settings_menu_app_color_mode,
desc = R.string.app_settings_menu_app_color_mode_description,
title = R.string.i18n_app_settings_menu_app_color_mode,
desc = R.string.i18n_app_settings_menu_app_color_mode_description,
state = state,
onToggle = { state = it },
),
Expand All @@ -154,8 +154,8 @@ class ScribeItemListTest {
val items =
(0..49).map { index ->
ScribeItem.ClickableItem(
title = R.string.app_settings_menu_app_language,
desc = R.string.app_settings_menu_app_language_description,
title = R.string.i18n_app_settings_menu_app_language,
desc = R.string.i18n_app_settings_menu_app_language_description,
action = { },
)
}
Expand Down Expand Up @@ -190,8 +190,8 @@ class ScribeItemListTest {
val items =
listOf(
ScribeItem.ClickableItem(
title = R.string.app_settings_menu_app_language,
desc = R.string.app_settings_menu_app_language_description,
title = R.string.i18n_app_settings_menu_app_language,
desc = R.string.i18n_app_settings_menu_app_language_description,
action = { },
),
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ class SettingsScreenInstallKeyboardButtonTest {
@Test
fun installKeyboardButton_isDisplayed_whenKeyboardNotInstalled() {
val context = InstrumentationRegistry.getInstrumentation().targetContext
val expectedText = context.getString(R.string.app_settings_button_install_keyboards)
val expectedText = context.getString(R.string.i18n_app_settings_button_install_keyboards)
val mockViewModel = createMockViewModel(isKeyboardInstalled = false)

composeTestRule.setContent {
Expand All @@ -58,7 +58,7 @@ class SettingsScreenInstallKeyboardButtonTest {
@Test
fun installKeyboardButton_isNotDisplayed_whenKeyboardInstalled() {
val context = InstrumentationRegistry.getInstrumentation().targetContext
val expectedText = context.getString(R.string.app_settings_button_install_keyboards)
val expectedText = context.getString(R.string.i18n_app_settings_button_install_keyboards)
val mockViewModel = createMockViewModel(isKeyboardInstalled = true)

every { mockViewModel.languages } returns MutableStateFlow(listOf("English", "German"))
Expand All @@ -82,7 +82,7 @@ class SettingsScreenInstallKeyboardButtonTest {
@Test
fun installKeyboardButton_hasClickAction_whenDisplayed() {
val context = InstrumentationRegistry.getInstrumentation().targetContext
val expectedText = context.getString(R.string.app_settings_button_install_keyboards)
val expectedText = context.getString(R.string.i18n_app_settings_button_install_keyboards)
val mockViewModel = createMockViewModel(isKeyboardInstalled = false)

composeTestRule.setContent {
Expand All @@ -105,7 +105,7 @@ class SettingsScreenInstallKeyboardButtonTest {
@Test
fun installKeyboardButton_performClick_buttonStillExists() {
val context = InstrumentationRegistry.getInstrumentation().targetContext
val expectedText = context.getString(R.string.app_settings_button_install_keyboards)
val expectedText = context.getString(R.string.i18n_app_settings_button_install_keyboards)
val mockViewModel = createMockViewModel(isKeyboardInstalled = false)

composeTestRule.setContent {
Expand All @@ -129,7 +129,7 @@ class SettingsScreenInstallKeyboardButtonTest {
@Test
fun installKeyboardButton_displaysCorrectText() {
val context = InstrumentationRegistry.getInstrumentation().targetContext
val expectedText = context.getString(R.string.app_settings_button_install_keyboards)
val expectedText = context.getString(R.string.i18n_app_settings_button_install_keyboards)
val mockViewModel = createMockViewModel(isKeyboardInstalled = false)

composeTestRule.setContent {
Expand All @@ -152,7 +152,7 @@ class SettingsScreenInstallKeyboardButtonTest {
@Test
fun installKeyboardButton_rendersCorrectly_inLightTheme() {
val context = InstrumentationRegistry.getInstrumentation().targetContext
val expectedText = context.getString(R.string.app_settings_button_install_keyboards)
val expectedText = context.getString(R.string.i18n_app_settings_button_install_keyboards)
val mockViewModel = createMockViewModel(isKeyboardInstalled = false)

composeTestRule.setContent {
Expand All @@ -176,7 +176,7 @@ class SettingsScreenInstallKeyboardButtonTest {
@Test
fun installKeyboardButton_rendersCorrectly_inDarkTheme() {
val context = InstrumentationRegistry.getInstrumentation().targetContext
val expectedText = context.getString(R.string.app_settings_button_install_keyboards)
val expectedText = context.getString(R.string.i18n_app_settings_button_install_keyboards)
val mockViewModel = createMockViewModel(isKeyboardInstalled = false)

every { mockViewModel.isUserDarkMode } returns MutableStateFlow(true)
Expand All @@ -202,7 +202,7 @@ class SettingsScreenInstallKeyboardButtonTest {
@Test
fun installKeyboardButton_hasProperStyling() {
val context = InstrumentationRegistry.getInstrumentation().targetContext
val expectedText = context.getString(R.string.app_settings_button_install_keyboards)
val expectedText = context.getString(R.string.i18n_app_settings_button_install_keyboards)
val mockViewModel = createMockViewModel(isKeyboardInstalled = false)

composeTestRule.setContent {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -79,7 +79,7 @@ class SettingsScreenInstrumentedTest {
}

composeTestRule
.onNodeWithText(context.getString(R.string.app_settings_title))
.onNodeWithText(context.getString(R.string.i18n_app_settings_title))
.assertIsDisplayed()
}

Expand All @@ -94,7 +94,7 @@ class SettingsScreenInstrumentedTest {
}

composeTestRule
.onNodeWithText(context.getString(R.string.app_settings_menu_app_language))
.onNodeWithText(context.getString(R.string.i18n_app_settings_menu_app_language))
.assertIsDisplayed()
}

Expand All @@ -109,7 +109,7 @@ class SettingsScreenInstrumentedTest {
}

composeTestRule
.onNodeWithText(context.getString(R.string.app_settings_menu_app_color_mode))
.onNodeWithText(context.getString(R.string.i18n_app_settings_menu_app_color_mode))
.assertIsDisplayed()
}

Expand All @@ -124,7 +124,7 @@ class SettingsScreenInstrumentedTest {
}

composeTestRule
.onNodeWithText(context.getString(R.string.app_settings_menu_app_color_mode_description))
.onNodeWithText(context.getString(R.string.i18n_app_settings_menu_app_color_mode_description))
.assertIsDisplayed()
}

Expand All @@ -142,7 +142,7 @@ class SettingsScreenInstrumentedTest {
}

composeTestRule
.onNodeWithText(context.getString(R.string.app_settings_button_install_keyboards))
.onNodeWithText(context.getString(R.string.i18n_app_settings_button_install_keyboards))
.assertIsDisplayed()
.assertHasClickAction()
}
Expand All @@ -163,7 +163,7 @@ class SettingsScreenInstrumentedTest {
}

composeTestRule
.onNodeWithText(context.getString(R.string.app_settings_keyboard_title))
.onNodeWithText(context.getString(R.string.i18n_app_settings_keyboard_title))
.assertIsDisplayed()

testLanguages.forEach { language ->
Expand Down Expand Up @@ -271,7 +271,7 @@ class SettingsScreenInstrumentedTest {
}

composeTestRule
.onNodeWithText(context.getString(R.string.app_settings_menu_title))
.onNodeWithText(context.getString(R.string.i18n_app_settings_menu_title))
.assertIsDisplayed()
}

Expand All @@ -287,7 +287,7 @@ class SettingsScreenInstrumentedTest {

val installButton =
composeTestRule
.onNodeWithText(context.getString(R.string.app_settings_button_install_keyboards))
.onNodeWithText(context.getString(R.string.i18n_app_settings_button_install_keyboards))

installButton.assertIsDisplayed()
installButton.assertHasClickAction()
Expand All @@ -304,7 +304,7 @@ class SettingsScreenInstrumentedTest {
}

composeTestRule
.onNodeWithText(context.getString(R.string.app_settings_menu_app_language_description))
.onNodeWithText(context.getString(R.string.i18n_app_settings_menu_app_language_description))
.assertIsDisplayed()
}

Expand Down Expand Up @@ -345,7 +345,7 @@ class SettingsScreenInstrumentedTest {
}

composeTestRule
.onNodeWithText(context.getString(R.string.app_settings_keyboard_title))
.onNodeWithText(context.getString(R.string.i18n_app_settings_keyboard_title))
.assertIsDisplayed()
}

Expand All @@ -360,11 +360,11 @@ class SettingsScreenInstrumentedTest {
}

composeTestRule
.onNodeWithText(context.getString(R.string.app_settings_menu_app_color_mode))
.onNodeWithText(context.getString(R.string.i18n_app_settings_menu_app_color_mode))
.assertIsDisplayed()

composeTestRule
.onNodeWithText(context.getString(R.string.app_settings_menu_app_color_mode_description))
.onNodeWithText(context.getString(R.string.i18n_app_settings_menu_app_color_mode_description))
.assertIsDisplayed()
}
}
13 changes: 13 additions & 0 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -135,6 +135,19 @@
android:name="android.view.im"
android:resource="@xml/method_italian" />
</service>
<service
android:name=".services.IndonesianKeyboardIME"
android:exported="true"
android:label="Scribe"
android:permission="android.permission.BIND_INPUT_METHOD" >
<intent-filter>
<action android:name="android.view.InputMethod" />
</intent-filter>

<meta-data
android:name="android.view.im"
android:resource="@xml/method_indonesian" />
</service>
</application>

</manifest>
Binary file added app/src/main/assets/data/IDLanguageData.sqlite
Binary file not shown.
Original file line number Diff line number Diff line change
Expand Up @@ -17,10 +17,13 @@ jobs:
uses: thollander/actions-comment-pull-request@v2
with:
message: |
## Thank you for the pull request! ❤️
## Thank you for the pull request! 💙

The Scribe-i18n team will do our best to address your contribution as soon as we can. If you're not already a member of our [public Matrix community](https://matrix.to/#/#scribe_community:matrix.org), please consider joining! We'd suggest using [Element](https://element.io/) as your Matrix client, and definitely join the `General` and `i18n` rooms once you're in. Also consider attending our [bi-weekly Saturday dev syncs](https://etherpad.wikimedia.org/p/scribe-dev-sync). It'd be great to meet you 😊

> [!NOTE]
> Scribe uses [Conventional Comments](https://conventionalcomments.org/) in reviews to make sure that communication is as clear as possible.

- name: Add Checklist
uses: thollander/actions-comment-pull-request@v2
with:
Expand Down
5 changes: 5 additions & 0 deletions app/src/main/assets/i18n/.gitignore
Original file line number Diff line number Diff line change
@@ -1,4 +1,9 @@
# MARK: OS Files

**/.DS_Store

# MARK: Python Files

venv
.venv
__pycache__
21 changes: 21 additions & 0 deletions app/src/main/assets/i18n/.i18n-check.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
# Configuration file for i18n-check validation.
# See https://github.com/activist-org/i18n-check for details.

# Check Key Sorting
# -----------------
# >>> python3 -m venv venv
# >>> source venv/bin/activate
# >>> pip install --upgrade pip
# >>> pip install i18n-check
# >>> i18n-check --sorted-keys # (-sk)
# >>> i18n-check --sorted-keys --fix # (-sk -f)

src-dir: Scribe-i18n
i18n-dir: Scribe-i18n/jsons
i18n-src: Scribe-i18n/jsons/en-US.json

file-types-to-check: [] # not needed for sorted keys

checks:
sorted-keys:
active: true
2 changes: 1 addition & 1 deletion app/src/main/assets/i18n/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -87,7 +87,7 @@ The [issue tracker for Scribe-i18n](https://github.com/scribe-org/Scribe-i18n/is
git subtree pull --prefix <subtree-directory> git@github.com:scribe-org/Scribe-i18n.git main --squash
```

- From the above command, two commits are then auto-generated. Finally, create the PR to the given project to bring in the Scribe-i18n updates.
- From the above command, two commits are then auto-generated. Any merge conflicts should be resolved by taking the file as is on Scribe-i18n. Finally, commit the changes to the given project to bring in the Scribe-i18n updates.

8. If the Git subtree does need to be recreated, the subtree can be removed in projects via the following command:

Expand Down
Loading
Loading