Skip to content

Commit

Permalink
Merge pull request #149 from fmasa/l18n
Browse files Browse the repository at this point in the history
Refactored translations + added Italian translations
  • Loading branch information
fmasa authored Aug 13, 2023
2 parents 88b4f91 + 097e0a1 commit a9785b3
Show file tree
Hide file tree
Showing 220 changed files with 3,281 additions and 2,666 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -15,14 +15,15 @@ import androidx.compose.runtime.saveable.rememberSaveable
import androidx.compose.runtime.setValue
import androidx.compose.ui.platform.LocalContext
import com.google.android.gms.auth.api.signin.GoogleSignIn
import cz.frantisekmasa.wfrp_master.common.Str
import cz.frantisekmasa.wfrp_master.common.auth.AuthenticationManager
import cz.frantisekmasa.wfrp_master.common.auth.LocalWebClientId
import cz.frantisekmasa.wfrp_master.common.core.shared.SettingsStorage
import cz.frantisekmasa.wfrp_master.common.core.shared.edit
import cz.frantisekmasa.wfrp_master.common.core.ui.flow.collectWithLifecycle
import cz.frantisekmasa.wfrp_master.common.localization.LocalStrings
import cz.frantisekmasa.wfrp_master.common.settings.AppSettings
import cz.frantisekmasa.wfrp_master.common.shell.SplashScreen
import dev.icerock.moko.resources.compose.stringResource
import io.github.aakira.napier.Napier
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
Expand Down Expand Up @@ -101,14 +102,12 @@ fun StartupScreen(authenticationManager: AuthenticationManager) {

@Composable
private fun AnonymousAuthenticationExplanationDialog(onDismissRequest: () -> Unit) {
val strings = LocalStrings.current

AlertDialog(
onDismissRequest = onDismissRequest,
text = { Text(strings.authentication.startupGoogleSignInFailed) },
text = { Text(stringResource(Str.authentication_startup_google_sign_in_failed)) },
confirmButton = {
TextButton(onClick = onDismissRequest) {
Text(strings.commonUi.buttonOk.uppercase())
Text(stringResource(Str.common_ui_button_ok).uppercase())
}
}
)
Expand Down
10 changes: 8 additions & 2 deletions build.gradle.kts
Original file line number Diff line number Diff line change
@@ -1,16 +1,22 @@
buildscript {
dependencies {
classpath("com.android.tools.build:gradle:${Versions.agp}")
classpath("com.android.tools.build:gradle:7.4.2")
classpath("org.jetbrains.compose:compose-gradle-plugin:${Versions.compose}")

classpath(kotlin("gradle-plugin", Versions.kotlin))
classpath(kotlin("serialization", Versions.kotlin))

classpath("dev.icerock.moko:resources-generator:0.23.0")

// Firebase-related dependencies
classpath("com.google.gms:google-services:4.3.8")
classpath("com.google.gms:google-services:4.3.14")
classpath("com.google.firebase:firebase-crashlytics-gradle:2.7.1")
// classpath("com.google.firebase:perf-plugin:1.4.0")
}

repositories {
gradlePluginPortal()
}
}

allprojects {
Expand Down
3 changes: 1 addition & 2 deletions buildSrc/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,9 @@ kotlinDslPluginOptions {
}

val versions = loadProperties("$projectDir/src/main/resources/versions.properties")
val agpVersion = versions["androidGradlePluginVersion"]
val kotlinVersion = versions["kotlinVersion"]

dependencies {
implementation("com.android.tools.build:gradle:$agpVersion")
implementation("com.android.tools.build:gradle:7.4.2")
implementation("org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion")
}
1 change: 0 additions & 1 deletion buildSrc/src/main/java/Versions.kt
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ import org.jetbrains.kotlin.gradle.utils.loadPropertyFromResources
object Versions {
private const val versionsFile = "versions.properties"

val agp = loadPropertyFromResources(versionsFile, "androidGradlePluginVersion")
val compose = loadPropertyFromResources(versionsFile, "composeVersion")
val kotlin = loadPropertyFromResources(versionsFile, "kotlinVersion")
val ktor = "2.0.0"
Expand Down
5 changes: 2 additions & 3 deletions buildSrc/src/main/resources/versions.properties
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
androidGradlePluginVersion=7.3.1
kotlinVersion=1.7.20
composeVersion=1.3.1
kotlinVersion=1.8.22
composeVersion=1.4.3

# Android SDK
androidMinSdk=21
Expand Down
8 changes: 8 additions & 0 deletions common/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,11 @@ plugins {
kotlin("plugin.serialization")
id("kotlin-parcelize")
id("org.jetbrains.compose")
id("dev.icerock.mobile.multiplatform-resources")
}

multiplatformResources {
multiplatformResourcesPackage = "cz.frantisekmasa.wfrp_master.common"
}

kotlin {
Expand Down Expand Up @@ -80,6 +85,9 @@ kotlin {
implementation("io.github.z4kn4fein:semver:1.3.3")

implementation("org.jsoup:jsoup:1.15.3")

api("dev.icerock.moko:resources:0.23.0")
api("dev.icerock.moko:resources-compose:0.23.0")
}
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,8 @@ import androidx.compose.runtime.remember
import com.vanpra.composematerialdialogs.MaterialDialog
import com.vanpra.composematerialdialogs.datetime.time.timepicker
import com.vanpra.composematerialdialogs.title
import cz.frantisekmasa.wfrp_master.common.localization.LocalStrings
import cz.frantisekmasa.wfrp_master.common.Str
import dev.icerock.moko.resources.compose.stringResource
import java.time.LocalTime

@Composable
Expand All @@ -15,11 +16,11 @@ actual fun timePicker(time: LocalTime, onTimeChange: TimePicker.(LocalTime) -> U

dialog.build(
buttons = {
positiveButton(LocalStrings.current.commonUi.buttonSave)
negativeButton(LocalStrings.current.commonUi.buttonCancel)
positiveButton(stringResource(Str.common_ui_button_save))
negativeButton(stringResource(Str.common_ui_button_cancel))
}
) {
title(LocalStrings.current.calendar.titleSelectTime)
title(stringResource(Str.calendar_title_select_time))
timepicker(time, onTimeChange = { timePicker.onTimeChange(it) })
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,11 +21,12 @@ import com.google.firebase.dynamiclinks.ktx.androidParameters
import com.google.firebase.dynamiclinks.ktx.dynamicLinks
import com.google.firebase.dynamiclinks.ktx.shortLinkAsync
import com.google.firebase.ktx.Firebase
import cz.frantisekmasa.wfrp_master.common.Str
import cz.frantisekmasa.wfrp_master.common.core.domain.party.Invitation
import cz.frantisekmasa.wfrp_master.common.core.logging.Reporter
import cz.frantisekmasa.wfrp_master.common.core.ui.primitives.FullScreenProgress
import cz.frantisekmasa.wfrp_master.common.core.ui.primitives.VisualOnlyIconDescription
import cz.frantisekmasa.wfrp_master.common.localization.LocalStrings
import dev.icerock.moko.resources.compose.stringResource
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.tasks.await
import kotlinx.coroutines.withContext
Expand All @@ -42,10 +43,9 @@ actual fun InvitationDialogContent(invitation: Invitation, screenModel: Invitati
FullScreenProgress()
} else {
val context = LocalContext.current
val strings = LocalStrings.current.parties

Text(
strings.messages.qrCodeDescription,
stringResource(Str.parties_messages_qr_code_description),
modifier = Modifier.fillMaxWidth(),
textAlign = TextAlign.Center,
style = MaterialTheme.typography.caption,
Expand All @@ -60,7 +60,7 @@ actual fun InvitationDialogContent(invitation: Invitation, screenModel: Invitati
},
) {
Icon(Icons.Rounded.Share, VisualOnlyIconDescription)
Text(strings.buttonShareLink.uppercase())
Text(stringResource(Str.parties_button_share_link).uppercase())
}
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,14 +33,15 @@ import androidx.compose.ui.text.style.TextAlign
import cafe.adriel.voyager.core.screen.Screen
import com.google.accompanist.permissions.PermissionState
import com.google.accompanist.permissions.rememberPermissionState
import cz.frantisekmasa.wfrp_master.common.Str
import cz.frantisekmasa.wfrp_master.common.core.domain.party.Invitation
import cz.frantisekmasa.wfrp_master.common.core.ui.buttons.BackButton
import cz.frantisekmasa.wfrp_master.common.core.ui.navigation.LocalNavigationTransaction
import cz.frantisekmasa.wfrp_master.common.core.ui.primitives.HorizontalLine
import cz.frantisekmasa.wfrp_master.common.core.ui.primitives.Spacing
import cz.frantisekmasa.wfrp_master.common.core.ui.primitives.rememberScreenModel
import cz.frantisekmasa.wfrp_master.common.core.ui.scaffolding.SubheadBar
import cz.frantisekmasa.wfrp_master.common.localization.LocalStrings
import dev.icerock.moko.resources.compose.stringResource
import kotlinx.coroutines.launch

actual class InvitationScannerScreen : Screen {
Expand All @@ -51,7 +52,7 @@ actual class InvitationScannerScreen : Screen {
Scaffold(
topBar = {
TopAppBar(
title = { Text(LocalStrings.current.parties.titleJoin) },
title = { Text(stringResource(Str.parties_title_join)) },
navigationIcon = { BackButton() },
)
},
Expand Down Expand Up @@ -92,7 +93,7 @@ actual class InvitationScannerScreen : Screen {

when {
camera.hasPermission -> {
SubheadBar(LocalStrings.current.parties.messages.qrCodeScanningPrompt)
SubheadBar(stringResource(Str.parties_messages_qr_code_scanning_prompt))
QrCodeScanner(
modifier = Modifier.fillMaxSize(),
onSuccessfulScan = { qrCodeData ->
Expand All @@ -115,17 +116,15 @@ actual class InvitationScannerScreen : Screen {
SideEffect { camera.launchPermissionRequest() }
}

val strings = LocalStrings.current.permissions

Text(
strings.cameraRequired,
stringResource(Str.permissions_camera_required),
style = MaterialTheme.typography.h6,
)

Rationale()

TextButton(onClick = { camera.launchPermissionRequest() }) {
Text(strings.buttonRequestPermission.uppercase())
Text(stringResource(Str.permissions_button_request_permission).uppercase())
}

Alternative()
Expand All @@ -135,15 +134,19 @@ actual class InvitationScannerScreen : Screen {
@Composable
private fun PermissionDeniedScreen() {
ScreenBody {
val strings = LocalStrings.current.permissions

Text(strings.cameraDenied, style = MaterialTheme.typography.h6)
Text(
stringResource(Str.permissions_camera_denied),
style = MaterialTheme.typography.h6,
)
Rationale()
Text(strings.messages.settingsScreenInstructions, textAlign = TextAlign.Center)
Text(
stringResource(Str.permissions_messages_settings_screen_instructions),
textAlign = TextAlign.Center,
)

val context = LocalContext.current
TextButton(onClick = { context.openApplicationSettings() }) {
Text(strings.buttonOpenSettings.uppercase())
Text(stringResource(Str.permissions_button_open_settings).uppercase())
}

Alternative()
Expand All @@ -165,7 +168,7 @@ actual class InvitationScannerScreen : Screen {
@Composable
private fun Rationale() {
Text(
LocalStrings.current.permissions.messages.cameraPermissionRationale,
stringResource(Str.permissions_messages_camera_permission_rationale),
textAlign = TextAlign.Center,
)
}
Expand All @@ -176,7 +179,7 @@ actual class InvitationScannerScreen : Screen {
HorizontalLine()

Text(
LocalStrings.current.parties.messages.invitationLinkAlternative,
stringResource(Str.parties_messages_invitation_link_alternative),
modifier = Modifier.padding(top = Spacing.mediumLarge),
textAlign = TextAlign.Center,
)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,8 @@ import com.google.zxing.BarcodeFormat
import com.google.zxing.EncodeHintType
import com.google.zxing.common.BitMatrix
import com.google.zxing.qrcode.QRCodeWriter
import cz.frantisekmasa.wfrp_master.common.localization.LocalStrings
import cz.frantisekmasa.wfrp_master.common.Str
import dev.icerock.moko.resources.compose.stringResource
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.withContext

Expand All @@ -45,7 +46,7 @@ internal fun QrCode(data: String) {
}
}
else -> {
Image(bitmap, LocalStrings.current.parties.imageQrCodeAlt)
Image(bitmap, stringResource(Str.parties_image_qr_code_alt))
}
}
}
Expand Down
Loading

0 comments on commit a9785b3

Please sign in to comment.