diff --git a/.gitignore b/.gitignore index b93bd0c9b..1be71a2fd 100644 --- a/.gitignore +++ b/.gitignore @@ -4,6 +4,7 @@ *.perspectivev3 *.swp *~.nib +*.hprof .DS_Store .externalNativeBuild .gradle diff --git a/android/android-base/build.gradle b/android/android-base/build.gradle index 6d7628ea6..f10169233 100644 --- a/android/android-base/build.gradle +++ b/android/android-base/build.gradle @@ -1,4 +1,5 @@ apply plugin: 'com.android.library' +apply plugin: 'kotlin-android' android { compileSdkVersion COMPILE_SDK_VERSION as Integer @@ -28,4 +29,5 @@ dependencies { implementation "org.apache.commons:commons-lang3:3.5" annotationProcessor "com.google.dagger:dagger-compiler:$DAGGER_VERSION" + implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$KOTLIN_VERSION" } diff --git a/android/android-base/src/main/java/org/isoron/androidbase/AndroidBugReporter.java b/android/android-base/src/main/java/org/isoron/androidbase/AndroidBugReporter.java deleted file mode 100644 index c0b30d1d9..000000000 --- a/android/android-base/src/main/java/org/isoron/androidbase/AndroidBugReporter.java +++ /dev/null @@ -1,156 +0,0 @@ -/* - * Copyright (C) 2017 Álinson Santos Xavier - * - * This file is part of Loop Habit Tracker. - * - * Loop Habit Tracker is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by the - * Free Software Foundation, either version 3 of the License, or (at your - * option) any later version. - * - * Loop Habit Tracker is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see . - */ - -package org.isoron.androidbase; - -import android.content.*; -import android.os.*; -import android.view.*; - -import androidx.annotation.NonNull; - -import java.io.*; -import java.text.*; -import java.util.*; - -import javax.inject.*; - -public class AndroidBugReporter -{ - private final Context context; - - @Inject - public AndroidBugReporter(@NonNull @AppContext Context context) - { - this.context = context; - } - - /** - * Captures and returns a bug report. The bug report contains some device - * information and the logcat. - * - * @return a String containing the bug report. - * @throws IOException when any I/O error occur. - */ - @NonNull - public String getBugReport() throws IOException - { - String logcat = getLogcat(); - String deviceInfo = getDeviceInfo(); - - String log = "---------- BUG REPORT BEGINS ----------\n"; - log += deviceInfo + "\n" + logcat; - log += "---------- BUG REPORT ENDS ------------\n"; - - return log; - } - - public String getDeviceInfo() - { - if (context == null) return "null context\n"; - - WindowManager wm = - (WindowManager) context.getSystemService(Context.WINDOW_SERVICE); - - return - String.format("App Version Name: %s\n", BuildConfig.VERSION_NAME) + - String.format("App Version Code: %s\n", BuildConfig.VERSION_CODE) + - String.format("OS Version: %s (%s)\n", - System.getProperty("os.version"), Build.VERSION.INCREMENTAL) + - String.format("OS API Level: %s\n", Build.VERSION.SDK) + - String.format("Device: %s\n", Build.DEVICE) + - String.format("Model (Product): %s (%s)\n", Build.MODEL, - Build.PRODUCT) + - String.format("Manufacturer: %s\n", Build.MANUFACTURER) + - String.format("Other tags: %s\n", Build.TAGS) + - String.format("Screen Width: %s\n", - wm.getDefaultDisplay().getWidth()) + - String.format("Screen Height: %s\n", - wm.getDefaultDisplay().getHeight()) + - String.format("External storage state: %s\n\n", - Environment.getExternalStorageState()); - } - - public String getLogcat() throws IOException - { - int maxLineCount = 250; - StringBuilder builder = new StringBuilder(); - - String[] command = new String[]{ "logcat", "-d" }; - java.lang.Process process = Runtime.getRuntime().exec(command); - - InputStreamReader in = new InputStreamReader(process.getInputStream()); - BufferedReader bufferedReader = new BufferedReader(in); - - LinkedList log = new LinkedList<>(); - - String line; - while ((line = bufferedReader.readLine()) != null) - { - log.addLast(line); - if (log.size() > maxLineCount) log.removeFirst(); - } - - for (String l : log) - { - builder.append(l); - builder.append('\n'); - } - - return builder.toString(); - } - - /** - * Captures a bug report and saves it to a file in the SD card. - *

- * The contents of the file are generated by the method {@link - * #getBugReport()}. The file is saved in the apps's external private - * storage. - * - * @return the generated file. - * @throws IOException when I/O errors occur. - */ - @NonNull - public void dumpBugReportToFile() - { - try - { - - String date = - new SimpleDateFormat("yyyy-MM-dd HHmmss", Locale.US).format( - new Date()); - - if (context == null) throw new IllegalStateException(); - - File dir = new AndroidDirFinder(context).getFilesDir("Logs"); - if (dir == null) - throw new IOException("log dir should not be null"); - - File logFile = - new File(String.format("%s/Log %s.txt", dir.getPath(), date)); - FileWriter output = new FileWriter(logFile); - output.write(getBugReport()); - output.close(); - } - catch (IOException e) - { - e.printStackTrace(); - } - } -} diff --git a/android/android-base/src/main/java/org/isoron/androidbase/AndroidBugReporter.kt b/android/android-base/src/main/java/org/isoron/androidbase/AndroidBugReporter.kt new file mode 100644 index 000000000..ea013ceef --- /dev/null +++ b/android/android-base/src/main/java/org/isoron/androidbase/AndroidBugReporter.kt @@ -0,0 +1,110 @@ +/* + * Copyright (C) 2017 Álinson Santos Xavier + * + * This file is part of Loop Habit Tracker. + * + * Loop Habit Tracker is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation, either version 3 of the License, or (at your + * option) any later version. + * + * Loop Habit Tracker is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . + */ +package org.isoron.androidbase + +import android.content.Context +import android.os.Build +import android.os.Environment +import android.view.WindowManager +import java.io.* +import java.text.SimpleDateFormat +import java.util.* +import javax.inject.Inject + +open class AndroidBugReporter @Inject constructor(@AppContext private val context: Context) { + + /** + * Captures and returns a bug report. The bug report contains some device + * information and the logcat. + * + * @return a String containing the bug report. + * @throws IOException when any I/O error occur. + */ + @Throws(IOException::class) + fun getBugReport(): String { + var log = "---------- BUG REPORT BEGINS ----------\n" + log += "${getLogcat()}\n" + log += "${getDeviceInfo()}\n" + log += "---------- BUG REPORT ENDS ------------\n" + return log + } + + @Throws(IOException::class) + fun getLogcat(): String { + val maxLineCount = 250 + val builder = StringBuilder() + val process = Runtime.getRuntime().exec(arrayOf("logcat", "-d")) + val inputReader = InputStreamReader(process.inputStream) + val bufferedReader = BufferedReader(inputReader) + val log = LinkedList() + var line: String? + while (true) { + line = bufferedReader.readLine() + if (line == null) break; + log.addLast(line) + if (log.size > maxLineCount) log.removeFirst() + } + for (l in log) { + builder.appendln(l) + } + return builder.toString() + } + + /** + * Captures a bug report and saves it to a file in the SD card. + * + * The contents of the file are generated by the method [ ][.getBugReport]. The file is saved + * in the apps's external private storage. + * + * @return the generated file. + * @throws IOException when I/O errors occur. + */ + fun dumpBugReportToFile() { + try { + val date = SimpleDateFormat("yyyy-MM-dd HHmmss", Locale.US).format(Date()) + val dir = AndroidDirFinder(context).getFilesDir("Logs") + ?: throw IOException("log dir should not be null") + val logFile = File(String.format("%s/Log %s.txt", dir.path, date)) + val output = FileWriter(logFile) + output.write(getBugReport()) + output.close() + } catch (e: IOException) { + e.printStackTrace() + } + } + + private fun getDeviceInfo(): String { + val wm = context.getSystemService(Context.WINDOW_SERVICE) as WindowManager + return buildString { + appendln("App Version Name: ${BuildConfig.VERSION_NAME}") + appendln("App Version Code: ${BuildConfig.VERSION_CODE}") + appendln("OS Version: ${System.getProperty("os.version")} (${Build.VERSION.INCREMENTAL})") + appendln("OS API Level: ${Build.VERSION.SDK}") + appendln("Device: ${Build.DEVICE}") + appendln("Model (Product): ${Build.MODEL} (${Build.PRODUCT})") + appendln("Manufacturer: ${Build.MANUFACTURER}") + appendln("Other tags: ${Build.TAGS}") + appendln("Screen Width: ${wm.defaultDisplay.width}") + appendln("Screen Height: ${wm.defaultDisplay.height}") + appendln("External storage state: ${Environment.getExternalStorageState()}") + appendln() + } + } + +} \ No newline at end of file diff --git a/android/android-base/src/main/java/org/isoron/androidbase/AndroidDirFinder.java b/android/android-base/src/main/java/org/isoron/androidbase/AndroidDirFinder.java deleted file mode 100644 index cb61cad60..000000000 --- a/android/android-base/src/main/java/org/isoron/androidbase/AndroidDirFinder.java +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Copyright (C) 2017 Álinson Santos Xavier - * - * This file is part of Loop Habit Tracker. - * - * Loop Habit Tracker is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by the - * Free Software Foundation, either version 3 of the License, or (at your - * option) any later version. - * - * Loop Habit Tracker is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see . - */ - -package org.isoron.androidbase; - -import android.content.*; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; -import androidx.core.content.*; -import android.util.*; - -import org.isoron.androidbase.utils.*; - -import java.io.*; - -import javax.inject.*; - -public class AndroidDirFinder -{ - @NonNull - private Context context; - - @Inject - public AndroidDirFinder(@NonNull @AppContext Context context) - { - this.context = context; - } - - @Nullable - public File getFilesDir(@Nullable String relativePath) - { - File externalFilesDirs[] = - ContextCompat.getExternalFilesDirs(context, null); - if (externalFilesDirs == null) - { - Log.e("BaseSystem", - "getFilesDir: getExternalFilesDirs returned null"); - return null; - } - - return FileUtils.getDir(externalFilesDirs, relativePath); - } -} diff --git a/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/about/AboutModule.java b/android/android-base/src/main/java/org/isoron/androidbase/AndroidDirFinder.kt similarity index 61% rename from android/uhabits-android/src/main/java/org/isoron/uhabits/activities/about/AboutModule.java rename to android/android-base/src/main/java/org/isoron/androidbase/AndroidDirFinder.kt index f75c2258a..9dbeeeb65 100644 --- a/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/about/AboutModule.java +++ b/android/android-base/src/main/java/org/isoron/androidbase/AndroidDirFinder.kt @@ -16,15 +16,19 @@ * You should have received a copy of the GNU General Public License along * with this program. If not, see . */ -package org.isoron.uhabits.activities.about; +package org.isoron.androidbase -import org.isoron.uhabits.core.ui.screens.about.*; +import android.content.Context +import androidx.core.content.ContextCompat +import org.isoron.androidbase.utils.FileUtils +import java.io.File +import javax.inject.Inject -import dagger.*; - -@Module -public abstract class AboutModule -{ - @Binds - abstract AboutBehavior.Screen getScreen(AboutScreen screen); -} +class AndroidDirFinder @Inject constructor(@param:AppContext private val context: Context) { + fun getFilesDir(relativePath: String?): File? { + return FileUtils.getDir( + ContextCompat.getExternalFilesDirs(context, null), + relativePath + ) + } +} \ No newline at end of file diff --git a/android/android-base/src/main/java/org/isoron/androidbase/AppContext.java b/android/android-base/src/main/java/org/isoron/androidbase/AppContext.kt similarity index 80% rename from android/android-base/src/main/java/org/isoron/androidbase/AppContext.java rename to android/android-base/src/main/java/org/isoron/androidbase/AppContext.kt index d7521e26d..3146da5e2 100644 --- a/android/android-base/src/main/java/org/isoron/androidbase/AppContext.java +++ b/android/android-base/src/main/java/org/isoron/androidbase/AppContext.kt @@ -16,16 +16,14 @@ * You should have received a copy of the GNU General Public License along * with this program. If not, see . */ +package org.isoron.androidbase -package org.isoron.androidbase; - -import java.lang.annotation.*; - -import javax.inject.*; +import java.lang.annotation.Documented +import java.lang.annotation.Retention +import java.lang.annotation.RetentionPolicy +import javax.inject.Qualifier @Qualifier @Documented @Retention(RetentionPolicy.RUNTIME) -public @interface AppContext -{ -} +annotation class AppContext \ No newline at end of file diff --git a/android/android-base/src/main/java/org/isoron/androidbase/BaseExceptionHandler.java b/android/android-base/src/main/java/org/isoron/androidbase/BaseExceptionHandler.java deleted file mode 100644 index 6a7e4e4d1..000000000 --- a/android/android-base/src/main/java/org/isoron/androidbase/BaseExceptionHandler.java +++ /dev/null @@ -1,68 +0,0 @@ -/* - * Copyright (C) 2017 Álinson Santos Xavier - * - * This file is part of Loop Habit Tracker. - * - * Loop Habit Tracker is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by the - * Free Software Foundation, either version 3 of the License, or (at your - * option) any later version. - * - * Loop Habit Tracker is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see . - */ - -package org.isoron.androidbase; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; - -import org.isoron.androidbase.activities.*; - -public class BaseExceptionHandler implements Thread.UncaughtExceptionHandler -{ - @Nullable - private Thread.UncaughtExceptionHandler originalHandler; - - @NonNull - private BaseActivity activity; - - public BaseExceptionHandler(@NonNull BaseActivity activity) - { - this.activity = activity; - originalHandler = Thread.getDefaultUncaughtExceptionHandler(); - } - - @Override - public void uncaughtException(@Nullable Thread thread, - @Nullable Throwable ex) - { - if (ex == null) return; - - try - { - ex.printStackTrace(); - new AndroidBugReporter(activity).dumpBugReportToFile(); - } - catch (Exception e) - { - e.printStackTrace(); - } - -// if (ex.getCause() instanceof InconsistentDatabaseException) -// { -// HabitsApplication app = (HabitsApplication) activity.getApplication(); -// HabitList habits = app.getComponent().getHabitList(); -// habits.repair(); -// System.exit(0); -// } - - if (originalHandler != null) - originalHandler.uncaughtException(thread, ex); - } -} diff --git a/android/android-base/src/main/java/org/isoron/androidbase/BaseExceptionHandler.kt b/android/android-base/src/main/java/org/isoron/androidbase/BaseExceptionHandler.kt new file mode 100644 index 000000000..c6907f3ec --- /dev/null +++ b/android/android-base/src/main/java/org/isoron/androidbase/BaseExceptionHandler.kt @@ -0,0 +1,39 @@ +/* + * Copyright (C) 2017 Álinson Santos Xavier + * + * This file is part of Loop Habit Tracker. + * + * Loop Habit Tracker is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation, either version 3 of the License, or (at your + * option) any later version. + * + * Loop Habit Tracker is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . + */ +package org.isoron.androidbase + +import org.isoron.androidbase.activities.BaseActivity + +class BaseExceptionHandler(private val activity: BaseActivity) : Thread.UncaughtExceptionHandler { + + private val originalHandler: Thread.UncaughtExceptionHandler? = + Thread.getDefaultUncaughtExceptionHandler() + + override fun uncaughtException(thread: Thread?, ex: Throwable?) { + if (ex == null) return + if (thread == null) return + try { + ex.printStackTrace() + AndroidBugReporter(activity).dumpBugReportToFile() + } catch (e: Exception) { + e.printStackTrace() + } + originalHandler?.uncaughtException(thread, ex) + } +} \ No newline at end of file diff --git a/android/android-base/src/main/java/org/isoron/androidbase/SSLContextProvider.java b/android/android-base/src/main/java/org/isoron/androidbase/SSLContextProvider.java deleted file mode 100644 index a522cb023..000000000 --- a/android/android-base/src/main/java/org/isoron/androidbase/SSLContextProvider.java +++ /dev/null @@ -1,70 +0,0 @@ -/* - * Copyright (C) 2017 Álinson Santos Xavier - * - * This file is part of Loop Habit Tracker. - * - * Loop Habit Tracker is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by the - * Free Software Foundation, either version 3 of the License, or (at your - * option) any later version. - * - * Loop Habit Tracker is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see . - */ - -package org.isoron.androidbase; - -import android.content.*; - -import androidx.annotation.NonNull; - -import java.io.*; -import java.security.*; -import java.security.cert.Certificate; -import java.security.cert.*; - -import javax.inject.*; -import javax.net.ssl.*; - -public class SSLContextProvider -{ - private Context context; - - @Inject - public SSLContextProvider(@NonNull @AppContext Context context) - { - this.context = context; - } - - public SSLContext getCACertSSLContext() - { - try - { - CertificateFactory cf = CertificateFactory.getInstance("X.509"); - InputStream caInput = context.getAssets().open("cacert.pem"); - Certificate ca = cf.generateCertificate(caInput); - - KeyStore ks = KeyStore.getInstance(KeyStore.getDefaultType()); - ks.load(null, null); - ks.setCertificateEntry("ca", ca); - - TrustManagerFactory tmf = TrustManagerFactory.getInstance( - TrustManagerFactory.getDefaultAlgorithm()); - tmf.init(ks); - - SSLContext ctx = SSLContext.getInstance("TLS"); - ctx.init(null, tmf.getTrustManagers(), null); - - return ctx; - } - catch (Exception e) - { - throw new RuntimeException(e); - } - } -} diff --git a/android/android-base/src/main/java/org/isoron/androidbase/SSLContextProvider.kt b/android/android-base/src/main/java/org/isoron/androidbase/SSLContextProvider.kt new file mode 100644 index 000000000..797d6c93d --- /dev/null +++ b/android/android-base/src/main/java/org/isoron/androidbase/SSLContextProvider.kt @@ -0,0 +1,48 @@ +/* + * Copyright (C) 2017 Álinson Santos Xavier + * + * This file is part of Loop Habit Tracker. + * + * Loop Habit Tracker is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation, either version 3 of the License, or (at your + * option) any later version. + * + * Loop Habit Tracker is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . + */ +package org.isoron.androidbase + +import android.content.Context +import java.security.KeyStore +import java.security.cert.CertificateFactory +import javax.inject.Inject +import javax.net.ssl.SSLContext +import javax.net.ssl.TrustManagerFactory + +class SSLContextProvider @Inject constructor(@param:AppContext private val context: Context) { + fun getCACertSSLContext(): SSLContext { + try { + val cf = CertificateFactory.getInstance("X.509") + val ca = cf.generateCertificate(context.assets.open("cacert.pem")) + val ks = KeyStore.getInstance(KeyStore.getDefaultType()).apply { + load(null, null) + setCertificateEntry("ca", ca) + } + val alg = TrustManagerFactory.getDefaultAlgorithm() + val tmf = TrustManagerFactory.getInstance(alg).apply { + init(ks) + } + return SSLContext.getInstance("TLS").apply { + init(null, tmf.trustManagers, null) + } + } catch (e: Exception) { + throw RuntimeException(e) + } + } +} \ No newline at end of file diff --git a/android/android-pickers/src/main/java/com/android/datetimepicker/time/TimePickerDialog.java b/android/android-pickers/src/main/java/com/android/datetimepicker/time/TimePickerDialog.java index b5e021a23..8863f7207 100644 --- a/android/android-pickers/src/main/java/com/android/datetimepicker/time/TimePickerDialog.java +++ b/android/android-pickers/src/main/java/com/android/datetimepicker/time/TimePickerDialog.java @@ -878,7 +878,7 @@ public class TimePickerDialog extends AppCompatDialogFragment implements OnValue // When the first digit is 2, the second digit may be 4-5. secondDigit = new Node(k4, k5); firstDigit.addChild(secondDigit); - // We must now be followd by the last minute digit. E.g. 2:40, 2:53. + // We must now be followed by the last minute digit. E.g. 2:40, 2:53. secondDigit.addChild(minuteSecondDigit); // The first digit may be 3-9. diff --git a/android/build.sh b/android/build.sh index 46baff919..c0243db13 100755 --- a/android/build.sh +++ b/android/build.sh @@ -25,294 +25,256 @@ OUTPUTS_DIR=uhabits-android/build/outputs VERSION=$(cat gradle.properties | grep VERSION_NAME | sed -e 's/.*=//g;s/ //g') if [ ! -f "${ANDROID_HOME}/platform-tools/adb" ]; then - echo "Error: ANDROID_HOME is not set correctly" - exit 1 + echo "Error: ANDROID_HOME is not set correctly" + exit 1 fi log_error() { - if [ ! -z "$TEAMCITY_VERSION" ]; then - echo "###teamcity[progressMessage '$1']" - else - local COLOR='\033[1;31m' - local NC='\033[0m' - echo -e "$COLOR>>> $1 $NC" - fi + if [ ! -z "$TEAMCITY_VERSION" ]; then + echo "###teamcity[progressMessage '$1']" + else + local COLOR='\033[1;31m' + local NC='\033[0m' + echo -e "$COLOR>>> $1 $NC" + fi } log_info() { - if [ ! -z "$TEAMCITY_VERSION" ]; then - echo "###teamcity[progressMessage '$1']" - else - local COLOR='\033[1;32m' - local NC='\033[0m' - echo -e "$COLOR>>> $1 $NC" - fi + if [ ! -z "$TEAMCITY_VERSION" ]; then + echo "###teamcity[progressMessage '$1']" + else + local COLOR='\033[1;32m' + local NC='\033[0m' + echo -e "$COLOR>>> $1 $NC" + fi } fail() { - if [ ! -z ${AVD_NAME} ]; then - stop_emulator - stop_gradle_daemon - fi - log_error "BUILD FAILED" - exit 1 + log_error "BUILD FAILED" + exit 1 } if [ ! -z $RELEASE ]; then - log_info "Reading secret env variables from ../.secret/env" - source ../.secret/env || fail + log_info "Reading secret env variables from ../.secret/env" + source ../.secret/env || fail fi -start_emulator() { - log_info "Starting emulator ($AVD_NAME)" - $EMULATOR -avd ${AVD_NAME} -port ${AVD_SERIAL} -no-audio -no-window & - $ADB wait-for-device shell 'while [[ -z $(getprop sys.boot_completed) ]]; do sleep 1; done; input keyevent 82' -} - -stop_emulator() { - log_info "Stopping emulator" - $ADB emu kill -} - -stop_gradle_daemon() { - log_info "Stopping gradle daemon" - $GRADLE --stop -} - run_adb_as_root() { - log_info "Running adb as root" - $ADB root + log_info "Running adb as root" + $ADB root } build_apk() { - log_info "Removing old APKs..." - rm -vf build/*.apk - - if [ ! -z $RELEASE ]; then - log_info "Building release APK" - ./gradlew assembleRelease - cp -v uhabits-android/build/outputs/apk/release/uhabits-android-release.apk build/loop-$VERSION-release.apk - fi - - log_info "Building debug APK" - ./gradlew assembleDebug || fail - cp -v uhabits-android/build/outputs/apk/debug/uhabits-android-debug.apk build/loop-$VERSION-debug.apk + log_info "Removing old APKs..." + rm -vf build/*.apk + + if [ ! -z $RELEASE ]; then + log_info "Building release APK" + ./gradlew assembleRelease + cp -v uhabits-android/build/outputs/apk/release/uhabits-android-release.apk build/loop-$VERSION-release.apk + fi + + log_info "Building debug APK" + ./gradlew assembleDebug || fail + cp -v uhabits-android/build/outputs/apk/debug/uhabits-android-debug.apk build/loop-$VERSION-debug.apk } build_instrumentation_apk() { - log_info "Building instrumentation APK" - if [ ! -z $RELEASE ]; then - $GRADLE assembleAndroidTest \ - -Pandroid.injected.signing.store.file=$LOOP_KEY_STORE \ - -Pandroid.injected.signing.store.password=$LOOP_STORE_PASSWORD \ - -Pandroid.injected.signing.key.alias=$LOOP_KEY_ALIAS \ - -Pandroid.injected.signing.key.password=$LOOP_KEY_PASSWORD || fail - else - $GRADLE assembleAndroidTest || fail - fi -} - -clean_output_dir() { - log_info "Cleaning output directory" - rm -rf ${OUTPUTS_DIR} - mkdir -p ${OUTPUTS_DIR} + log_info "Building instrumentation APK" + if [ ! -z $RELEASE ]; then + $GRADLE assembleAndroidTest \ + -Pandroid.injected.signing.store.file=$LOOP_KEY_STORE \ + -Pandroid.injected.signing.store.password=$LOOP_STORE_PASSWORD \ + -Pandroid.injected.signing.key.alias=$LOOP_KEY_ALIAS \ + -Pandroid.injected.signing.key.password=$LOOP_KEY_PASSWORD || fail + else + $GRADLE assembleAndroidTest || fail + fi } uninstall_apk() { - log_info "Uninstalling existing APK" - $ADB uninstall ${PACKAGE_NAME} + log_info "Uninstalling existing APK" + $ADB uninstall ${PACKAGE_NAME} } install_test_butler() { - log_info "Installing Test Butler" - $ADB uninstall com.linkedin.android.testbutler - $ADB install tools/test-butler-app-2.0.2.apk + log_info "Installing Test Butler" + $ADB uninstall com.linkedin.android.testbutler + $ADB install tools/test-butler-app-2.0.2.apk } install_apk() { - log_info "Installing APK" - if [ ! -z $RELEASE ]; then - $ADB install -r ${OUTPUTS_DIR}/apk/release/uhabits-android-release.apk || fail - else - $ADB install -t -r ${OUTPUTS_DIR}/apk/debug/uhabits-android-debug.apk || fail - fi + log_info "Installing APK" + if [ ! -z $RELEASE ]; then + $ADB install -r ${OUTPUTS_DIR}/apk/release/uhabits-android-release.apk || fail + else + $ADB install -t -r ${OUTPUTS_DIR}/apk/debug/uhabits-android-debug.apk || fail + fi } install_test_apk() { - log_info "Uninstalling existing test APK" - $ADB uninstall ${PACKAGE_NAME}.test + log_info "Uninstalling existing test APK" + $ADB uninstall ${PACKAGE_NAME}.test - log_info "Installing test APK" - $ADB install -r ${OUTPUTS_DIR}/apk/androidTest/debug/uhabits-android-debug-androidTest.apk || fail + log_info "Installing test APK" + $ADB install -r ${OUTPUTS_DIR}/apk/androidTest/debug/uhabits-android-debug-androidTest.apk || fail } run_instrumented_tests() { - SIZE=$1 - log_info "Running instrumented tests" - $ADB shell am instrument \ - -r -e coverage true -e size $SIZE \ - -w ${PACKAGE_NAME}.test/android.support.test.runner.AndroidJUnitRunner \ - | tee ${OUTPUTS_DIR}/instrument.txt - - if grep FAILURES $OUTPUTS_DIR/instrument.txt; then - log_error "Some instrumented tests failed" - fetch_images - fetch_logcat - exit 1 - fi - - #mkdir -p ${OUTPUTS_DIR}/code-coverage/connected/ - #$ADB pull /data/user/0/${PACKAGE_NAME}/files/coverage.ec \ - # ${OUTPUTS_DIR}/code-coverage/connected/ \ - # || log_error "COVERAGE REPORT NOT AVAILABLE" + SIZE=$1 + log_info "Running instrumented tests" + $ADB shell am instrument \ + -r -e coverage true -e size $SIZE \ + -w ${PACKAGE_NAME}.test/androidx.test.runner.AndroidJUnitRunner \ + | tee ${OUTPUTS_DIR}/instrument.txt + + if grep "\(INSTRUMENTATION_STATUS_CODE.*-1\|FAILURES\)" $OUTPUTS_DIR/instrument.txt; then + log_error "Some instrumented tests failed" + fetch_images + fetch_logcat + exit 1 + fi + + #mkdir -p ${OUTPUTS_DIR}/code-coverage/connected/ + #$ADB pull /data/user/0/${PACKAGE_NAME}/files/coverage.ec \ + # ${OUTPUTS_DIR}/code-coverage/connected/ \ + # || log_error "COVERAGE REPORT NOT AVAILABLE" } parse_instrumentation_results() { - log_info "Parsing instrumented test results" - java -jar tools/automator-log-converter-1.5.0.jar ${OUTPUTS_DIR}/instrument.txt || fail + log_info "Parsing instrumented test results" + java -jar tools/automator-log-converter-1.5.0.jar ${OUTPUTS_DIR}/instrument.txt || fail } generate_coverage_badge() { - log_info "Generating code coverage badge" - CORE_REPORT=uhabits-core/build/reports/jacoco/test/jacocoTestReport.xml - rm -f ${OUTPUTS_DIR}/coverage-badge.svg - python3 tools/coverage-badge/badge.py -i $CORE_REPORT -o ${OUTPUTS_DIR}/coverage-badge + log_info "Generating code coverage badge" + CORE_REPORT=uhabits-core/build/reports/jacoco/test/jacocoTestReport.xml + rm -f ${OUTPUTS_DIR}/coverage-badge.svg + python3 tools/coverage-badge/badge.py -i $CORE_REPORT -o ${OUTPUTS_DIR}/coverage-badge } fetch_logcat() { - log_info "Fetching logcat" - $ADB logcat -d > ${OUTPUTS_DIR}/logcat.txt + log_info "Fetching logcat" + $ADB logcat -d > ${OUTPUTS_DIR}/logcat.txt } run_jvm_tests() { - log_info "Running JVM tests" - if [ ! -z $RELEASE ]; then - $GRADLE testReleaseUnitTest :uhabits-core:check || fail - else - $GRADLE testDebugUnitTest :uhabits-core:check || fail - fi + log_info "Running JVM tests" + if [ ! -z $RELEASE ]; then + $GRADLE testReleaseUnitTest :uhabits-core:check || fail + else + $GRADLE testDebugUnitTest :uhabits-core:check || fail + fi } uninstall_test_apk() { - log_info "Uninstalling test APK" - $ADB uninstall ${PACKAGE_NAME}.test + log_info "Uninstalling test APK" + $ADB uninstall ${PACKAGE_NAME}.test } fetch_images() { - log_info "Fetching images" - rm -rf $OUTPUTS_DIR/test-screenshots - $ADB pull /sdcard/Android/data/${PACKAGE_NAME}/files/test-screenshots/ $OUTPUTS_DIR - $ADB shell rm -r /sdcard/Android/data/${PACKAGE_NAME}/files/test-screenshots/ + log_info "Fetching images" + rm -rf $OUTPUTS_DIR/test-screenshots + $ADB pull /sdcard/Android/data/${PACKAGE_NAME}/files/test-screenshots/ $OUTPUTS_DIR + $ADB shell rm -r /sdcard/Android/data/${PACKAGE_NAME}/files/test-screenshots/ } accept_images() { - find tmp/test-screenshots -name '*.expected*' -delete - rsync -av tmp/test-screenshots/ uhabits-android/src/androidTest/assets/ + find tmp/test-screenshots -name '*.expected*' -delete + rsync -av tmp/test-screenshots/ uhabits-android/src/androidTest/assets/ } run_tests() { - SIZE=$1 - run_adb_as_root - install_test_butler - uninstall_apk - install_apk - install_test_apk - run_instrumented_tests $SIZE - parse_instrumentation_results - fetch_logcat - uninstall_test_apk + SIZE=$1 + run_adb_as_root + install_test_butler + uninstall_apk + install_apk + install_test_apk + run_instrumented_tests $SIZE + parse_instrumentation_results + fetch_logcat + uninstall_test_apk } parse_opts() { - OPTS=`getopt -o ur --long uninstall-first,release -n 'build.sh' -- "$@"` - if [ $? != 0 ] ; then exit 1; fi - eval set -- "$OPTS" - - while true; do - case "$1" in - -u | --uninstall-first ) UNINSTALL_FIRST=1; shift ;; - -r | --release ) RELEASE=1; shift ;; - * ) break ;; - esac - done + OPTS=`getopt -o r --long release -n 'build.sh' -- "$@"` + if [ $? != 0 ] ; then exit 1; fi + eval set -- "$OPTS" + + while true; do + case "$1" in + -r | --release ) RELEASE=1; shift ;; + * ) break ;; + esac + done +} + +remove_build_dir() { + rm -rfv .gradle + rm -rfv build + rm -rfv android-base/build + rm -rfv android-pickers/build + rm -rfv uhabits-android/build + rm -rfv uhabits-core/build } case "$1" in - build) - shift; parse_opts $* - - build_apk - build_instrumentation_apk - run_jvm_tests - #generate_coverage_badge - ;; - - ci-tests) - if [ -z $3 ]; then - cat <<- END - Usage: $0 ci-tests AVD_NAME AVD_SERIAL [options] - - Parameters: - AVD_NAME name of the virtual android device to start - AVD_SERIAL adb port to use (e.g. 5560) - - Options: - -u --uninstall-first Uninstall existing APK first - -r --release Test release APK, instead of debug - END - exit 1 - fi - - shift; AVD_NAME=$1 - shift; AVD_SERIAL=$1 - shift; parse_opts $* - ADB="${ADB} -s emulator-${AVD_SERIAL}" - - start_emulator - run_tests medium - stop_emulator - stop_gradle_daemon - ;; - - medium-tests) - shift; parse_opts $* - run_tests medium - ;; - - large-tests) - shift; parse_opts $* - run_tests large - ;; - - fetch-images) - fetch_images - ;; - - accept-images) - accept_images - ;; - - install) - shift; parse_opts $* - build_apk - install_apk - ;; - - *) - cat <<- END - Usage: $0 [options] - Builds, installs and tests Loop Habit Tracker - - Commands: - ci-tests Start emulator silently, run tests then kill emulator - local-tests Run all tests on connected device - install Install app on connected device - fetch-images Fetches failed view test images from device - accept-images Copies fetched images to corresponding assets folder - - Options: - -r --release Build and test release APK, instead of debug - END - exit 1 + build) + shift; parse_opts $* + + build_apk + build_instrumentation_apk + run_jvm_tests + #generate_coverage_badge + ;; + + medium-tests) + shift; parse_opts $* + run_tests medium + ;; + + large-tests) + shift; parse_opts $* + run_tests large + ;; + + fetch-images) + fetch_images + ;; + + accept-images) + accept_images + ;; + + install) + shift; parse_opts $* + build_apk + install_apk + ;; + + clean) + remove_build_dir + ;; + + *) +cat < [options] +Builds, installs and tests Loop Habit Tracker + +Commands: + accept-images Copies fetched images to corresponding assets folder + build Build APK and run JVM tests + clean Remove build directory + fetch-images Fetches failed view test images from device + install Install app on connected device + large-tests Run large-sized tests on connected device + medium-tests Run medium-sized tests on connected device + +Options: + -r --release Build and test release APK, instead of debug +END + exit 1 + ;; esac diff --git a/android/gradle.properties b/android/gradle.properties index e35c52421..c88c721dc 100644 --- a/android/gradle.properties +++ b/android/gradle.properties @@ -9,7 +9,7 @@ DAGGER_VERSION = 2.25.4 KOTLIN_VERSION = 1.3.61 SUPPORT_LIBRARY_VERSION = 28.0.0 AUTO_FACTORY_VERSION = 1.0-beta6 -BUILD_TOOLS_VERSION = 3.5.3 +BUILD_TOOLS_VERSION = 4.0.0 org.gradle.parallel=false org.gradle.daemon=true diff --git a/android/gradle/wrapper/gradle-wrapper.properties b/android/gradle/wrapper/gradle-wrapper.properties index 1ba7206f8..84337ad35 100644 --- a/android/gradle/wrapper/gradle-wrapper.properties +++ b/android/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-6.0.1-all.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-6.1.1-all.zip diff --git a/android/tools/coverage-badge/badge.py b/android/tools/coverage-badge/badge.py index 0e1ffe421..3e6bae8bb 100644 --- a/android/tools/coverage-badge/badge.py +++ b/android/tools/coverage-badge/badge.py @@ -55,7 +55,7 @@ def get_total(report): def get_color(total): """ - Return color for current coverage precent + Return color for current coverage percent """ try: xtotal = int(total) diff --git a/android/uhabits-android/build.gradle b/android/uhabits-android/build.gradle index 1b7282409..afa54c1ef 100644 --- a/android/uhabits-android/build.gradle +++ b/android/uhabits-android/build.gradle @@ -88,6 +88,7 @@ dependencies { implementation "com.google.code.gson:gson:2.8.5" implementation "com.google.code.findbugs:jsr305:3.0.2" implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$KOTLIN_VERSION" + implementation "androidx.constraintlayout:constraintlayout:2.0.0-beta4" implementation 'androidx.constraintlayout:constraintlayout:1.1.3' compileOnly "javax.annotation:jsr250-api:1.0" diff --git a/android/uhabits-android/src/androidTest/assets/views-v26/habits/show/NotesCard/render-empty-description.png b/android/uhabits-android/src/androidTest/assets/views-v26/habits/show/NotesCard/render-empty-description.png new file mode 100644 index 000000000..f9b378f6c Binary files /dev/null and b/android/uhabits-android/src/androidTest/assets/views-v26/habits/show/NotesCard/render-empty-description.png differ diff --git a/android/uhabits-android/src/androidTest/assets/views-v26/habits/show/NotesCard/render.png b/android/uhabits-android/src/androidTest/assets/views-v26/habits/show/NotesCard/render.png new file mode 100644 index 000000000..dafb53f4f Binary files /dev/null and b/android/uhabits-android/src/androidTest/assets/views-v26/habits/show/NotesCard/render.png differ diff --git a/android/uhabits-android/src/androidTest/java/org/isoron/uhabits/BaseUserInterfaceTest.java b/android/uhabits-android/src/androidTest/java/org/isoron/uhabits/BaseUserInterfaceTest.java index f8c62a2c6..6b5a1931c 100644 --- a/android/uhabits-android/src/androidTest/java/org/isoron/uhabits/BaseUserInterfaceTest.java +++ b/android/uhabits-android/src/androidTest/java/org/isoron/uhabits/BaseUserInterfaceTest.java @@ -39,6 +39,7 @@ import static androidx.test.uiautomator.UiDevice.*; public class BaseUserInterfaceTest { private static final String PKG = "org.isoron.uhabits"; + public static final String EMPTY_DESCRIPTION_HABIT_NAME = "Read books"; public static UiDevice device; @@ -96,25 +97,29 @@ public class BaseUserInterfaceTest Habit h1 = fixtures.createEmptyHabit(); h1.setName("Wake up early"); - h1.setDescription("Did you wake up early today?"); + h1.setQuestion("Did you wake up early today?"); + h1.setDescription("test description 1"); h1.setColor(5); habitList.update(h1); Habit h2 = fixtures.createShortHabit(); h2.setName("Track time"); - h2.setDescription("Did you track your time?"); + h2.setQuestion("Did you track your time?"); + h2.setDescription("test description 2"); h2.setColor(5); habitList.update(h2); Habit h3 = fixtures.createLongHabit(); h3.setName("Meditate"); - h3.setDescription("Did meditate today?"); + h3.setQuestion("Did meditate today?"); + h3.setDescription("test description 3"); h3.setColor(10); habitList.update(h3); Habit h4 = fixtures.createEmptyHabit(); - h4.setName("Read books"); - h4.setDescription("Did you read books today?"); + h4.setName(EMPTY_DESCRIPTION_HABIT_NAME); + h4.setQuestion("Did you read books today?"); + h4.setDescription(""); h4.setColor(2); habitList.update(h4); } diff --git a/android/uhabits-android/src/androidTest/java/org/isoron/uhabits/HabitFixtures.java b/android/uhabits-android/src/androidTest/java/org/isoron/uhabits/HabitFixtures.java index c636f682b..364166de7 100644 --- a/android/uhabits-android/src/androidTest/java/org/isoron/uhabits/HabitFixtures.java +++ b/android/uhabits-android/src/androidTest/java/org/isoron/uhabits/HabitFixtures.java @@ -52,7 +52,8 @@ public class HabitFixtures { Habit habit = modelFactory.buildHabit(); habit.setName("Meditate"); - habit.setDescription("Did you meditate this morning?"); + habit.setQuestion("Did you meditate this morning?"); + habit.setDescription("This is a test description"); habit.setColor(5); habit.setFrequency(Frequency.DAILY); habit.setId(id); @@ -81,7 +82,7 @@ public class HabitFixtures { Habit habit = modelFactory.buildHabit(); habit.setName("Take a walk"); - habit.setDescription("How many steps did you walk today?"); + habit.setQuestion("How many steps did you walk today?"); habit.setType(Habit.NUMBER_HABIT); habit.setTargetType(Habit.AT_LEAST); habit.setTargetValue(200.0); @@ -103,7 +104,7 @@ public class HabitFixtures { Habit habit = modelFactory.buildHabit(); habit.setName("Wake up early"); - habit.setDescription("Did you wake up before 6am?"); + habit.setQuestion("Did you wake up before 6am?"); habit.setFrequency(new Frequency(2, 3)); habitList.add(habit); diff --git a/android/uhabits-android/src/androidTest/java/org/isoron/uhabits/HabitsActivityTestComponent.kt b/android/uhabits-android/src/androidTest/java/org/isoron/uhabits/HabitsActivityTestComponent.kt index dde1b5a90..508077ac7 100644 --- a/android/uhabits-android/src/androidTest/java/org/isoron/uhabits/HabitsActivityTestComponent.kt +++ b/android/uhabits-android/src/androidTest/java/org/isoron/uhabits/HabitsActivityTestComponent.kt @@ -37,7 +37,6 @@ class TestModule { @ActivityScope @Component(modules = arrayOf( ActivityContextModule::class, - AboutModule::class, HabitsActivityModule::class, ListHabitsModule::class, ShowHabitModule::class, diff --git a/android/uhabits-android/src/androidTest/java/org/isoron/uhabits/acceptance/HabitsTest.java b/android/uhabits-android/src/androidTest/java/org/isoron/uhabits/acceptance/HabitsTest.java index 8901f177b..87f38a660 100644 --- a/android/uhabits-android/src/androidTest/java/org/isoron/uhabits/acceptance/HabitsTest.java +++ b/android/uhabits-android/src/androidTest/java/org/isoron/uhabits/acceptance/HabitsTest.java @@ -20,7 +20,6 @@ package org.isoron.uhabits.acceptance; import androidx.test.filters.*; -import androidx.test.runner.*; import androidx.test.ext.junit.runners.AndroidJUnit4; @@ -39,7 +38,16 @@ import static org.isoron.uhabits.acceptance.steps.ListHabitsSteps.*; public class HabitsTest extends BaseUserInterfaceTest { @Test - public void shouldCreateHabit() throws Exception + public void shouldCreateHabit() throws Exception { + shouldCreateHabit("this is a test description"); + } + + @Test + public void shouldCreateHabitBlankDescription() throws Exception { + shouldCreateHabit(""); + } + + private void shouldCreateHabit(String description) throws Exception { launchApp(); @@ -47,14 +55,16 @@ public class HabitsTest extends BaseUserInterfaceTest clickMenu(ADD); verifyShowsScreen(EDIT_HABIT); - typeName("Hello world"); + String testName = "Hello world"; + typeName(testName); typeQuestion("Did you say hello to the world today?"); + typeDescription(description); pickFrequency("Every week"); pickColor(5); clickSave(); verifyShowsScreen(LIST_HABITS); - verifyDisplaysText("Hello world"); + verifyDisplaysText(testName); } @Test @@ -81,7 +91,16 @@ public class HabitsTest extends BaseUserInterfaceTest } @Test - public void shouldEditHabit() throws Exception + public void shouldEditHabit() throws Exception { + shouldEditHabit("this is a test description"); + } + + @Test + public void shouldEditHabitBlankDescription() throws Exception { + shouldEditHabit(""); + } + + private void shouldEditHabit(String description) throws Exception { launchApp(); @@ -92,6 +111,7 @@ public class HabitsTest extends BaseUserInterfaceTest verifyShowsScreen(EDIT_HABIT); typeName("Take a walk"); typeQuestion("Did you take a walk today?"); + typeDescription(description); clickSave(); verifyShowsScreen(LIST_HABITS); @@ -174,4 +194,12 @@ public class HabitsTest extends BaseUserInterfaceTest verifyDisplaysText("Track time"); verifyDisplaysText("Wake up early"); } + + @Test + public void shouldHideNotesCard() throws Exception + { + launchApp(); + clickText(EMPTY_DESCRIPTION_HABIT_NAME); + verifyShowsScreen(SHOW_HABIT, false); + } } diff --git a/android/uhabits-android/src/androidTest/java/org/isoron/uhabits/acceptance/steps/CommonSteps.java b/android/uhabits-android/src/androidTest/java/org/isoron/uhabits/acceptance/steps/CommonSteps.java index 967a6b70d..f7ff2119c 100644 --- a/android/uhabits-android/src/androidTest/java/org/isoron/uhabits/acceptance/steps/CommonSteps.java +++ b/android/uhabits-android/src/androidTest/java/org/isoron/uhabits/acceptance/steps/CommonSteps.java @@ -19,14 +19,16 @@ package org.isoron.uhabits.acceptance.steps; +import android.view.View; + import androidx.annotation.StringRes; import androidx.test.espresso.*; import androidx.test.espresso.contrib.*; import androidx.test.uiautomator.*; -import androidx.appcompat.widget.*; import androidx.recyclerview.widget.RecyclerView; +import org.hamcrest.Matcher; import org.isoron.uhabits.*; import org.isoron.uhabits.R; import org.isoron.uhabits.activities.habits.list.*; @@ -153,7 +155,11 @@ public class CommonSteps extends BaseUserInterfaceTest LIST_HABITS, SHOW_HABIT, EDIT_HABIT } - public static void verifyShowsScreen(Screen screen) + public static void verifyShowsScreen(Screen screen) { + verifyShowsScreen(screen, true); + } + + public static void verifyShowsScreen(Screen screen, boolean notesCardVisibleExpected) { switch(screen) { @@ -163,10 +169,14 @@ public class CommonSteps extends BaseUserInterfaceTest break; case SHOW_HABIT: + Matcher noteCardViewMatcher = notesCardVisibleExpected ? isDisplayed() : + withEffectiveVisibility(Visibility.GONE); onView(withId(R.id.subtitleCard)).check(matches(isDisplayed())); + onView(withId(R.id.notesCard)).check(matches(noteCardViewMatcher)); break; case EDIT_HABIT: + onView(withId(R.id.tvQuestion)).check(matches(isDisplayed())); onView(withId(R.id.tvDescription)).check(matches(isDisplayed())); break; } diff --git a/android/uhabits-android/src/androidTest/java/org/isoron/uhabits/acceptance/steps/EditHabitSteps.java b/android/uhabits-android/src/androidTest/java/org/isoron/uhabits/acceptance/steps/EditHabitSteps.java index 90293cc24..deddfbd1d 100644 --- a/android/uhabits-android/src/androidTest/java/org/isoron/uhabits/acceptance/steps/EditHabitSteps.java +++ b/android/uhabits-android/src/androidTest/java/org/isoron/uhabits/acceptance/steps/EditHabitSteps.java @@ -55,7 +55,12 @@ public class EditHabitSteps public static void typeQuestion(String name) { - typeTextWithId(R.id.tvDescription, name); + typeTextWithId(R.id.tvQuestion, name); + } + + public static void typeDescription(String description) + { + typeTextWithId(R.id.tvDescription, description); } public static void setReminder() diff --git a/android/uhabits-android/src/androidTest/java/org/isoron/uhabits/activities/habits/show/views/NotesCardTest.java b/android/uhabits-android/src/androidTest/java/org/isoron/uhabits/activities/habits/show/views/NotesCardTest.java new file mode 100644 index 000000000..6f91bf4d6 --- /dev/null +++ b/android/uhabits-android/src/androidTest/java/org/isoron/uhabits/activities/habits/show/views/NotesCardTest.java @@ -0,0 +1,79 @@ +/* + * Copyright (C) 2016 Álinson Santos Xavier + * + * This file is part of Loop Habit Tracker. + * + * Loop Habit Tracker is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by the + * Free Software Foundation, either version 3 of the License, or (at your + * option) any later version. + * + * Loop Habit Tracker is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY + * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along + * with this program. If not, see . + */ + +package org.isoron.uhabits.activities.habits.show.views; + +import android.view.LayoutInflater; + +import androidx.test.ext.junit.runners.AndroidJUnit4; +import androidx.test.filters.MediumTest; + +import org.isoron.uhabits.BaseViewTest; +import org.isoron.uhabits.R; +import org.isoron.uhabits.core.models.Habit; +import org.isoron.uhabits.core.models.Reminder; +import org.isoron.uhabits.core.models.WeekdayList; +import org.junit.Before; +import org.junit.Test; +import org.junit.runner.RunWith; + +@RunWith(AndroidJUnit4.class) +@MediumTest +public class NotesCardTest extends BaseViewTest +{ + public static final String PATH = "habits/show/NotesCard/"; + + private NotesCard view; + + private Habit habit; + + @Before + @Override + public void setUp() + { + super.setUp(); + + habit = fixtures.createLongHabit(); + habit.setReminder(new Reminder(8, 30, WeekdayList.EVERY_DAY)); + + view = LayoutInflater + .from(targetContext) + .inflate(R.layout.show_habit, null) + .findViewById(R.id.notesCard); + + view.setHabit(habit); + view.refreshData(); + + measureView(view, 800, 200); + } + + @Test + public void testRender() throws Exception + { + assertRenders(view, PATH + "render.png"); + } + + @Test + public void testRenderEmptyDescription() throws Exception + { + habit.setDescription(""); + view.refreshData(); + assertRenders(view, PATH + "render-empty-description.png"); + } +} diff --git a/android/uhabits-android/src/androidTest/java/org/isoron/uhabits/activities/habits/show/views/SubtitleCardTest.java b/android/uhabits-android/src/androidTest/java/org/isoron/uhabits/activities/habits/show/views/SubtitleCardTest.java index 8c0f3763e..63aa74407 100644 --- a/android/uhabits-android/src/androidTest/java/org/isoron/uhabits/activities/habits/show/views/SubtitleCardTest.java +++ b/android/uhabits-android/src/androidTest/java/org/isoron/uhabits/activities/habits/show/views/SubtitleCardTest.java @@ -49,7 +49,7 @@ public class SubtitleCardTest extends BaseViewTest habit = fixtures.createLongHabit(); habit.setReminder(new Reminder(8, 30, WeekdayList.EVERY_DAY)); - view = (SubtitleCard) LayoutInflater + view = LayoutInflater .from(targetContext) .inflate(R.layout.show_habit, null) .findViewById(R.id.subtitleCard); diff --git a/android/uhabits-android/src/androidTest/java/org/isoron/uhabits/tasks/ExportCSVTaskTest.java b/android/uhabits-android/src/androidTest/java/org/isoron/uhabits/tasks/ExportCSVTaskTest.java deleted file mode 100644 index 9ae51a618..000000000 --- a/android/uhabits-android/src/androidTest/java/org/isoron/uhabits/tasks/ExportCSVTaskTest.java +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Copyright (C) 2016 Álinson Santos Xavier - * - * This file is part of Loop Habit Tracker. - * - * Loop Habit Tracker is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by the - * Free Software Foundation, either version 3 of the License, or (at your - * option) any later version. - * - * Loop Habit Tracker is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see . - */ - -package org.isoron.uhabits.tasks; - -import androidx.test.filters.*; -import androidx.test.runner.*; - -import androidx.test.ext.junit.runners.AndroidJUnit4; - -import org.isoron.uhabits.*; -import org.junit.*; -import org.junit.runner.*; - -@RunWith(AndroidJUnit4.class) -@MediumTest -public class ExportCSVTaskTest extends BaseAndroidTest -{ - @Before - @Override - public void setUp() - { - super.setUp(); - } - -// @Test -// public void testExportCSV() throws Throwable -// { -// fixtures.purgeHabits(habitList); -// fixtures.createShortHabit(); -// -// List selected = new LinkedList<>(); -// for (Habit h : habitList) selected.add(h); -// File outputDir = new AndroidDirFinder(targetContext).getFilesDir("CSV"); -// assertNotNull(outputDir); -// -// taskRunner.execute( -// new ExportCSVTask(habitList, selected, outputDir, archiveFilename -> { -// assertThat(archiveFilename, is(not(nullValue()))); -// File f = new File(archiveFilename); -// assertTrue(f.exists()); -// assertTrue(f.canRead()); -// })); -// } -} diff --git a/android/uhabits-android/src/androidTest/java/org/isoron/uhabits/tasks/ExportDBTaskTest.java b/android/uhabits-android/src/androidTest/java/org/isoron/uhabits/tasks/ExportDBTaskTest.java deleted file mode 100644 index c383c9338..000000000 --- a/android/uhabits-android/src/androidTest/java/org/isoron/uhabits/tasks/ExportDBTaskTest.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * Copyright (C) 2016 Álinson Santos Xavier - * - * This file is part of Loop Habit Tracker. - * - * Loop Habit Tracker is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by the - * Free Software Foundation, either version 3 of the License, or (at your - * option) any later version. - * - * Loop Habit Tracker is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see . - */ - -package org.isoron.uhabits.tasks; - -import androidx.test.filters.*; -import androidx.test.runner.*; - -import androidx.test.ext.junit.runners.AndroidJUnit4; - -import org.isoron.uhabits.*; -import org.junit.*; -import org.junit.runner.*; - -@RunWith(AndroidJUnit4.class) -@MediumTest -public class ExportDBTaskTest extends BaseAndroidTest -{ - @Override - @Before - public void setUp() - { - super.setUp(); - } - -// @Test -// public void testExportCSV() throws Throwable -// { -// ExportDBTask task = -// new ExportDBTask(targetContext, new AndroidDirFinder(targetContext), -// filename -> -// { -// assertNotNull(filename); -// File f = new File(filename); -// assertTrue(f.exists()); -// assertTrue(f.canRead()); -// }); -// -// taskRunner.execute(task); -// } -} diff --git a/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/HabitsActivityComponent.kt b/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/HabitsActivityComponent.kt index ed6906b74..a135b02d4 100644 --- a/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/HabitsActivityComponent.kt +++ b/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/HabitsActivityComponent.kt @@ -34,15 +34,12 @@ import org.isoron.uhabits.core.ui.screens.habits.list.* @Component(modules = arrayOf( ActivityContextModule::class, BaseActivityModule::class, - AboutModule::class, HabitsActivityModule::class, ListHabitsModule::class, ShowHabitModule::class, HabitModule::class ), dependencies = arrayOf(HabitsApplicationComponent::class)) interface HabitsActivityComponent { - val aboutRootView: AboutRootView - val aboutScreen: AboutScreen val colorPickerDialogFactory: ColorPickerDialogFactory val habitCardListAdapter: HabitCardListAdapter val listHabitsBehavior: ListHabitsBehavior diff --git a/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/about/AboutActivity.java b/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/about/AboutActivity.java index fc098b3c9..58cf49681 100644 --- a/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/about/AboutActivity.java +++ b/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/about/AboutActivity.java @@ -21,6 +21,7 @@ package org.isoron.uhabits.activities.about; import android.os.*; +import org.isoron.uhabits.*; import org.isoron.uhabits.activities.*; /** @@ -33,8 +34,12 @@ public class AboutActivity extends HabitsActivity protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); - AboutScreen screen = getComponent().getAboutScreen(); - screen.setRootView(getComponent().getAboutRootView()); + HabitsApplication app = (HabitsApplication) getApplication(); + AboutScreen screen = new AboutScreen(this, + app.getComponent().getIntentFactory(), + app.getComponent().getPreferences()); + AboutRootView rootView = new AboutRootView(this, screen); + screen.setRootView(rootView); setScreen(screen); } } diff --git a/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/about/AboutRootView.java b/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/about/AboutRootView.java index ed169720a..68cb68551 100644 --- a/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/about/AboutRootView.java +++ b/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/about/AboutRootView.java @@ -22,13 +22,12 @@ package org.isoron.uhabits.activities.about; import android.content.*; import android.widget.*; -import androidx.annotation.NonNull; +import androidx.annotation.*; import org.isoron.androidbase.activities.*; import org.isoron.androidbase.utils.*; import org.isoron.uhabits.BuildConfig; import org.isoron.uhabits.R; -import org.isoron.uhabits.core.ui.screens.about.*; import javax.inject.*; @@ -40,14 +39,14 @@ public class AboutRootView extends BaseRootView TextView tvVersion; @NonNull - private final AboutBehavior behavior; + private final AboutScreen screen; @Inject public AboutRootView(@NonNull @ActivityContext Context context, - @NonNull AboutBehavior behavior) + @NonNull AboutScreen screen) { super(context); - this.behavior = behavior; + this.screen = screen; addView(inflate(getContext(), R.layout.about, null)); ButterKnife.bind(this); @@ -71,46 +70,45 @@ public class AboutRootView extends BaseRootView @OnClick(R.id.tvFeedback) public void onClickFeedback() { - behavior.onSendFeedback(); + screen.showSendFeedbackScreen(); } @OnClick(R.id.tvVersion) public void onClickIcon() { - behavior.onPressDeveloperCountdown(); + screen.onPressDeveloperCountdown(); } @OnClick(R.id.tvRate) public void onClickRate() { - behavior.onRateApp(); + screen.showRateAppWebsite(); } @OnClick(R.id.tvSource) public void onClickSource() { - behavior.onViewSourceCode(); + screen.showSourceCodeWebsite(); } @OnClick(R.id.tvTranslate) public void onClickTranslate() { - behavior.onTranslateApp(); + screen.showTranslationWebsite(); } @OnClick(R.id.tvPrivacy) public void onClickPrivacy() { - behavior.onClickPrivacy(); + screen.showPrivacyPolicyWebsite(); } @OnClick(R.id.tvContributors) public void onClickContributors() { - behavior.onClickCodeContributors(); + screen.showCodeContributorsWebsite(); } - @Override protected void initToolbar() { diff --git a/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/about/AboutScreen.java b/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/about/AboutScreen.java index 2252d19a6..c5b668ae8 100644 --- a/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/about/AboutScreen.java +++ b/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/about/AboutScreen.java @@ -21,69 +21,67 @@ package org.isoron.uhabits.activities.about; import android.widget.*; -import androidx.annotation.NonNull; +import androidx.annotation.*; import org.isoron.androidbase.activities.*; -import org.isoron.uhabits.core.ui.screens.about.*; +import org.isoron.uhabits.core.preferences.*; import org.isoron.uhabits.intents.*; -import javax.inject.*; +public class AboutScreen extends BaseScreen +{ + @NonNull + private final Preferences prefs; -import static org.isoron.uhabits.core.ui.screens.about.AboutBehavior.Message.*; + private int developerCountdown = 5; -public class AboutScreen extends BaseScreen implements AboutBehavior.Screen -{ @NonNull private final IntentFactory intents; - @Inject public AboutScreen(@NonNull BaseActivity activity, - @NonNull IntentFactory intents) + @NonNull IntentFactory intents, + @NonNull Preferences prefs) { super(activity); this.intents = intents; + this.prefs = prefs; } - @Override - public void showMessage(AboutBehavior.Message message) - { - if (message == YOU_ARE_NOW_A_DEVELOPER) Toast - .makeText(activity, "You are now a developer", Toast.LENGTH_LONG) - .show(); - } - - @Override public void showRateAppWebsite() { activity.startActivity(intents.rateApp(activity)); } - @Override public void showSendFeedbackScreen() { activity.startActivity(intents.sendFeedback(activity)); } - @Override public void showSourceCodeWebsite() { activity.startActivity(intents.viewSourceCode(activity)); } - @Override public void showTranslationWebsite() { activity.startActivity(intents.helpTranslate(activity)); } - @Override public void showPrivacyPolicyWebsite() { activity.startActivity(intents.privacyPolicy(activity)); } - @Override - public void showCodeContributorsWebsite() { + public void showCodeContributorsWebsite() + { activity.startActivity(intents.codeContributors(activity)); } + + public void onPressDeveloperCountdown() + { + developerCountdown--; + if (developerCountdown == 0) { + prefs.setDeveloper(true); + Toast.makeText(activity, "You are now a developer", Toast.LENGTH_LONG).show(); + } + } } diff --git a/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/edit/EditHabitDialog.java b/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/edit/EditHabitDialog.java index b57352543..6e449504b 100644 --- a/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/edit/EditHabitDialog.java +++ b/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/edit/EditHabitDialog.java @@ -187,6 +187,7 @@ public class EditHabitDialog extends AppCompatDialogFragment habit.copyFrom(originalHabit); habit.setName(namePanel.getName()); habit.setDescription(namePanel.getDescription()); + habit.setQuestion(namePanel.getQuestion()); habit.setColor(namePanel.getColor()); habit.setReminder(reminderPanel.getReminder()); habit.setFrequency(frequencyPanel.getFrequency()); diff --git a/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/edit/views/ExampleEditText.java b/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/edit/views/ExampleEditText.java index 276f0cfbe..a3e14387f 100644 --- a/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/edit/views/ExampleEditText.java +++ b/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/edit/views/ExampleEditText.java @@ -24,6 +24,7 @@ import android.text.*; import android.util.*; import android.view.*; +import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.appcompat.widget.AppCompatEditText; @@ -82,7 +83,7 @@ public class ExampleEditText extends AppCompatEditText updateText(); } - public void setRealText(String realText) + public void setRealText(@NonNull String realText) { this.realText = realText; updateText(); diff --git a/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/edit/views/NameDescriptionPanel.java b/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/edit/views/NameDescriptionPanel.java index 5eb73a5e1..b08a55a47 100644 --- a/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/edit/views/NameDescriptionPanel.java +++ b/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/edit/views/NameDescriptionPanel.java @@ -42,6 +42,9 @@ public class NameDescriptionPanel extends FrameLayout @BindView(R.id.tvName) EditText tvName; + @BindView(R.id.tvQuestion) + ExampleEditText tvQuestion; + @BindView(R.id.tvDescription) ExampleEditText tvDescription; @@ -79,6 +82,12 @@ public class NameDescriptionPanel extends FrameLayout return tvDescription.getRealText().trim(); } + @NonNull + public String getQuestion() + { + return tvQuestion.getRealText().trim(); + } + @NonNull public String getName() { @@ -90,12 +99,13 @@ public class NameDescriptionPanel extends FrameLayout Resources res = getResources(); if(habit.isNumerical()) - tvDescription.setExample(res.getString(R.string.example_question_numerical)); + tvQuestion.setExample(res.getString(R.string.example_question_numerical)); else - tvDescription.setExample(res.getString(R.string.example_question_boolean)); + tvQuestion.setExample(res.getString(R.string.example_question_boolean)); setColor(habit.getColor()); tvName.setText(habit.getName()); + tvQuestion.setRealText(habit.getQuestion()); tvDescription.setRealText(habit.getDescription()); } diff --git a/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/show/ShowHabitRootView.java b/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/show/ShowHabitRootView.java index fc0b206fd..9c2963867 100644 --- a/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/show/ShowHabitRootView.java +++ b/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/show/ShowHabitRootView.java @@ -21,6 +21,7 @@ package org.isoron.uhabits.activities.habits.show; import android.content.*; import android.os.*; +import android.widget.TextView; import androidx.annotation.NonNull; import androidx.appcompat.widget.*; @@ -52,6 +53,12 @@ public class ShowHabitRootView extends BaseRootView @BindView(R.id.subtitleCard) SubtitleCard subtitleCard; + @BindView(R.id.notesCard) + NotesCard notesCard; + + @BindView(R.id.habitNotes) + TextView habitNotes; + @BindView(R.id.overviewCard) OverviewCard overviewCard; @@ -136,6 +143,7 @@ public class ShowHabitRootView extends BaseRootView private void initCards() { subtitleCard.setHabit(habit); + notesCard.setHabit(habit); overviewCard.setHabit(habit); scoreCard.setHabit(habit); historyCard.setHabit(habit); diff --git a/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/show/views/NotesCard.kt b/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/show/views/NotesCard.kt new file mode 100644 index 000000000..5e9d6864b --- /dev/null +++ b/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/show/views/NotesCard.kt @@ -0,0 +1,26 @@ +package org.isoron.uhabits.activities.habits.show.views + +import android.content.Context +import android.util.AttributeSet +import android.view.View +import android.widget.TextView +import org.isoron.uhabits.R +import org.isoron.uhabits.core.tasks.Task + +class NotesCard(context: Context?, attrs: AttributeSet?) : HabitCard(context, attrs) { + + private val notesTextView: TextView + + init { + View.inflate(getContext(), R.layout.show_habit_notes, this) + notesTextView = findViewById(R.id.habitNotes) + } + + override fun refreshData() { + notesTextView.text = habit.description + visibility = if(habit.description.isEmpty()) View.GONE else View.VISIBLE + notesTextView.visibility = visibility + } + + override fun createRefreshTask(): Task = error("refresh task should never be called.") +} \ No newline at end of file diff --git a/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/show/views/SubtitleCard.java b/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/show/views/SubtitleCard.java index ac8605862..4fc43031f 100644 --- a/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/show/views/SubtitleCard.java +++ b/android/uhabits-android/src/main/java/org/isoron/uhabits/activities/habits/show/views/SubtitleCard.java @@ -59,12 +59,12 @@ public class SubtitleCard extends HabitCard questionLabel.setVisibility(VISIBLE); questionLabel.setTextColor(color); - questionLabel.setText(habit.getDescription()); + questionLabel.setText(habit.getQuestion()); frequencyLabel.setText(toText(habit.getFrequency())); if (habit.hasReminder()) updateReminderText(habit.getReminder()); - if (habit.getDescription().isEmpty()) questionLabel.setVisibility(GONE); + if (habit.getQuestion().isEmpty()) questionLabel.setVisibility(GONE); invalidate(); } diff --git a/android/uhabits-android/src/main/java/org/isoron/uhabits/notifications/AndroidNotificationTray.kt b/android/uhabits-android/src/main/java/org/isoron/uhabits/notifications/AndroidNotificationTray.kt index 3c1b9c220..3fff2b615 100644 --- a/android/uhabits-android/src/main/java/org/isoron/uhabits/notifications/AndroidNotificationTray.kt +++ b/android/uhabits-android/src/main/java/org/isoron/uhabits/notifications/AndroidNotificationTray.kt @@ -112,7 +112,7 @@ class AndroidNotificationTray val builder = NotificationCompat.Builder(context, REMINDERS_CHANNEL_ID) .setSmallIcon(R.drawable.ic_notification) .setContentTitle(habit.name) - .setContentText(if(habit.description.isBlank()) defaultText else habit.description) + .setContentText(if(habit.question.isBlank()) defaultText else habit.question) .setContentIntent(pendingIntents.showHabit(habit)) .setDeleteIntent(pendingIntents.dismissNotification(habit)) .addAction(addRepetitionAction) diff --git a/android/uhabits-android/src/main/res/layout/edit_habit_name.xml b/android/uhabits-android/src/main/res/layout/edit_habit_name.xml index 70a8137b7..f926ac55d 100644 --- a/android/uhabits-android/src/main/res/layout/edit_habit_name.xml +++ b/android/uhabits-android/src/main/res/layout/edit_habit_name.xml @@ -1,5 +1,4 @@ - - - + android:layout_height="wrap_content" + android:minWidth="300dp"> - + - + android:ellipsize="start" + android:gravity="center_vertical" + android:hint="@string/name"> - + + + - - - + - + - + + + android:layout_width="0dp" + android:layout_height="wrap_content" + android:layout_marginTop="8dp" + android:hint="@string/notes" + app1:layout_constraintBottom_toBottomOf="parent" + app1:layout_constraintEnd_toEndOf="parent" + app1:layout_constraintStart_toStartOf="parent" + app1:layout_constraintTop_toBottomOf="@id/tilQuestion"> + android:gravity="top" + app:example="@string/example_notes" /> - \ No newline at end of file + \ No newline at end of file diff --git a/android/uhabits-android/src/main/res/layout/show_habit_inner.xml b/android/uhabits-android/src/main/res/layout/show_habit_inner.xml index 55b66a6cc..3b92b3e26 100644 --- a/android/uhabits-android/src/main/res/layout/show_habit_inner.xml +++ b/android/uhabits-android/src/main/res/layout/show_habit_inner.xml @@ -38,6 +38,11 @@ android:id="@+id/subtitleCard" style="@style/ShowHabit.Subtitle"/> + + diff --git a/android/uhabits-android/src/main/res/layout/show_habit_notes.xml b/android/uhabits-android/src/main/res/layout/show_habit_notes.xml new file mode 100644 index 000000000..ce1da19b5 --- /dev/null +++ b/android/uhabits-android/src/main/res/layout/show_habit_notes.xml @@ -0,0 +1,35 @@ + + + + + + \ No newline at end of file diff --git a/android/uhabits-android/src/main/res/layout/show_habit_subtitle.xml b/android/uhabits-android/src/main/res/layout/show_habit_subtitle.xml index 4c57473c0..9533a5f54 100644 --- a/android/uhabits-android/src/main/res/layout/show_habit_subtitle.xml +++ b/android/uhabits-android/src/main/res/layout/show_habit_subtitle.xml @@ -18,7 +18,12 @@ ~ with this program. If not, see . --> - + + android:orientation="horizontal" + tools:visibility="visible"> + android:src="?iconFrequency" /> + android:textSize="@dimen/smallTextSize" /> + android:src="?iconReminder" /> + android:textSize="@dimen/smallTextSize" /> \ No newline at end of file diff --git a/android/uhabits-android/src/main/res/values/constants.xml b/android/uhabits-android/src/main/res/values/constants.xml index ebb658dac..0bf396697 100644 --- a/android/uhabits-android/src/main/res/values/constants.xml +++ b/android/uhabits-android/src/main/res/values/constants.xml @@ -123,7 +123,7 @@ daily weekly - montly + monthly 15 diff --git a/android/uhabits-android/src/main/res/values/strings.xml b/android/uhabits-android/src/main/res/values/strings.xml index af088952a..d2273b13b 100644 --- a/android/uhabits-android/src/main/res/values/strings.xml +++ b/android/uhabits-android/src/main/res/values/strings.xml @@ -244,5 +244,7 @@ Makes widgets more transparent or more opaque in your home screen. First day of the week Have you completed this habit today? + Notes + You can put whatever you want here! \ No newline at end of file diff --git a/android/uhabits-core/build.gradle b/android/uhabits-core/build.gradle index 1537f0b7a..0e89a2eb7 100644 --- a/android/uhabits-core/build.gradle +++ b/android/uhabits-core/build.gradle @@ -1,5 +1,6 @@ apply plugin: 'idea' apply plugin: 'java' +apply plugin: 'kotlin' dependencies { annotationProcessor "com.google.auto.factory:auto-factory:$AUTO_FACTORY_VERSION" @@ -26,6 +27,7 @@ dependencies { implementation('com.opencsv:opencsv:3.10') { exclude group: 'commons-logging', module: 'commons-logging' } + implementation "org.jetbrains.kotlin:kotlin-stdlib:$KOTLIN_VERSION" } sourceCompatibility = "1.8" diff --git a/android/uhabits-core/src/main/java/org/isoron/uhabits/core/Config.java b/android/uhabits-core/src/main/java/org/isoron/uhabits/core/Config.java index ffb05939f..286755a33 100644 --- a/android/uhabits-core/src/main/java/org/isoron/uhabits/core/Config.java +++ b/android/uhabits-core/src/main/java/org/isoron/uhabits/core/Config.java @@ -22,5 +22,5 @@ package org.isoron.uhabits.core; public class Config { public static final String DATABASE_FILENAME = "uhabits.db"; - public static int DATABASE_VERSION = 22; + public static int DATABASE_VERSION = 23; } diff --git a/android/uhabits-core/src/main/java/org/isoron/uhabits/core/database/Repository.java b/android/uhabits-core/src/main/java/org/isoron/uhabits/core/database/Repository.java index a550c6a54..a61b86ffa 100644 --- a/android/uhabits-core/src/main/java/org/isoron/uhabits/core/database/Repository.java +++ b/android/uhabits-core/src/main/java/org/isoron/uhabits/core/database/Repository.java @@ -57,7 +57,7 @@ public class Repository * Returns all records matching the given SQL query. *

* The query should only contain the "where" part of the SQL query, and - * optinally the "order by" part. "Group by" is not allowed. If no matching + * optionally the "order by" part. "Group by" is not allowed. If no matching * records are found, returns an empty list. */ @NonNull diff --git a/android/uhabits-core/src/main/java/org/isoron/uhabits/core/io/HabitBullCSVImporter.java b/android/uhabits-core/src/main/java/org/isoron/uhabits/core/io/HabitBullCSVImporter.java index 3873b4ad8..f2289af65 100644 --- a/android/uhabits-core/src/main/java/org/isoron/uhabits/core/io/HabitBullCSVImporter.java +++ b/android/uhabits-core/src/main/java/org/isoron/uhabits/core/io/HabitBullCSVImporter.java @@ -87,7 +87,7 @@ public class HabitBullCSVImporter extends AbstractImporter { h = modelFactory.buildHabit(); h.setName(name); - h.setDescription(description); + h.setDescription(description == null ? "" : description); h.setFrequency(Frequency.DAILY); habitList.add(h); map.put(name, h); diff --git a/android/uhabits-core/src/main/java/org/isoron/uhabits/core/io/RewireDBImporter.java b/android/uhabits-core/src/main/java/org/isoron/uhabits/core/io/RewireDBImporter.java index 1f0299f40..ac0d83c79 100644 --- a/android/uhabits-core/src/main/java/org/isoron/uhabits/core/io/RewireDBImporter.java +++ b/android/uhabits-core/src/main/java/org/isoron/uhabits/core/io/RewireDBImporter.java @@ -101,7 +101,7 @@ public class RewireDBImporter extends AbstractImporter Habit habit = modelFactory.buildHabit(); habit.setName(name); - habit.setDescription(description); + habit.setDescription(description == null ? "" : description); int periods[] = { 7, 31, 365 }; int numerator, denominator; diff --git a/android/uhabits-core/src/main/java/org/isoron/uhabits/core/io/TickmateDBImporter.java b/android/uhabits-core/src/main/java/org/isoron/uhabits/core/io/TickmateDBImporter.java index af7ecb993..e1a0f2508 100644 --- a/android/uhabits-core/src/main/java/org/isoron/uhabits/core/io/TickmateDBImporter.java +++ b/android/uhabits-core/src/main/java/org/isoron/uhabits/core/io/TickmateDBImporter.java @@ -127,7 +127,7 @@ public class TickmateDBImporter extends AbstractImporter Habit habit = modelFactory.buildHabit(); habit.setName(name); - habit.setDescription(description); + habit.setDescription(description == null ? "" : description); habit.setFrequency(Frequency.DAILY); habitList.add(habit); diff --git a/android/uhabits-core/src/main/java/org/isoron/uhabits/core/models/Habit.java b/android/uhabits-core/src/main/java/org/isoron/uhabits/core/models/Habit.java index cee0dabcf..a290b56d9 100644 --- a/android/uhabits-core/src/main/java/org/isoron/uhabits/core/models/Habit.java +++ b/android/uhabits-core/src/main/java/org/isoron/uhabits/core/models/Habit.java @@ -354,6 +354,15 @@ public class Habit data.position = newPosition; } + @NonNull + public String getQuestion() { + return data.question; + } + + public void setQuestion(@NonNull String question) { + data.question = question; + } + public static final class HabitData { @NonNull @@ -362,6 +371,9 @@ public class Habit @NonNull public String description; + @NonNull + public String question; + @NonNull public Frequency frequency; @@ -391,6 +403,7 @@ public class Habit this.type = YES_NO_HABIT; this.name = ""; this.description = ""; + this.question = ""; this.targetType = AT_LEAST; this.targetValue = 100; this.unit = ""; @@ -401,6 +414,7 @@ public class Habit { this.name = model.name; this.description = model.description; + this.question = model.question; this.frequency = model.frequency; this.color = model.color; this.archived = model.archived; @@ -427,6 +441,7 @@ public class Habit .append("unit", unit) .append("reminder", reminder) .append("position", position) + .append("question", question) .toString(); } @@ -451,6 +466,7 @@ public class Habit .append(unit, habitData.unit) .append(reminder, habitData.reminder) .append(position, habitData.position) + .append(question, habitData.question) .isEquals(); } @@ -469,6 +485,7 @@ public class Habit .append(unit) .append(reminder) .append(position) + .append(question) .toHashCode(); } } diff --git a/android/uhabits-core/src/main/java/org/isoron/uhabits/core/models/HabitList.java b/android/uhabits-core/src/main/java/org/isoron/uhabits/core/models/HabitList.java index ae843e8da..84916f322 100644 --- a/android/uhabits-core/src/main/java/org/isoron/uhabits/core/models/HabitList.java +++ b/android/uhabits-core/src/main/java/org/isoron/uhabits/core/models/HabitList.java @@ -212,6 +212,7 @@ public abstract class HabitList implements Iterable String header[] = { "Position", "Name", + "Question", "Description", "NumRepetitions", "Interval", @@ -228,6 +229,7 @@ public abstract class HabitList implements Iterable String[] cols = { String.format("%03d", indexOf(habit) + 1), habit.getName(), + habit.getQuestion(), habit.getDescription(), Integer.toString(freq.getNumerator()), Integer.toString(freq.getDenominator()), diff --git a/android/uhabits-core/src/main/java/org/isoron/uhabits/core/models/StreakList.java b/android/uhabits-core/src/main/java/org/isoron/uhabits/core/models/StreakList.java index a624324c7..542ed9962 100644 --- a/android/uhabits-core/src/main/java/org/isoron/uhabits/core/models/StreakList.java +++ b/android/uhabits-core/src/main/java/org/isoron/uhabits/core/models/StreakList.java @@ -123,7 +123,7 @@ public abstract class StreakList * habit to not performing a habit, and vice-versa. * * @param beginning the timestamp for the first checkmark - * @param checks the checkmarks, ordered by decresing timestamp + * @param checks the checkmarks, ordered by decreasing timestamp * @return the list of transitions */ @NonNull diff --git a/android/uhabits-core/src/main/java/org/isoron/uhabits/core/models/sqlite/records/HabitRecord.java b/android/uhabits-core/src/main/java/org/isoron/uhabits/core/models/sqlite/records/HabitRecord.java index 29e7ffb5c..523da0542 100644 --- a/android/uhabits-core/src/main/java/org/isoron/uhabits/core/models/sqlite/records/HabitRecord.java +++ b/android/uhabits-core/src/main/java/org/isoron/uhabits/core/models/sqlite/records/HabitRecord.java @@ -33,6 +33,9 @@ public class HabitRecord @Column public String description; + @Column + public String question; + @Column public String name; @@ -91,6 +94,7 @@ public class HabitRecord this.targetValue = model.getTargetValue(); this.unit = model.getUnit(); this.position = model.getPosition(); + this.question = model.getQuestion(); Frequency freq = model.getFrequency(); this.freqNum = freq.getNumerator(); @@ -113,6 +117,7 @@ public class HabitRecord habit.setId(this.id); habit.setName(this.name); habit.setDescription(this.description); + habit.setQuestion(this.question); habit.setFrequency(new Frequency(this.freqNum, this.freqDen)); habit.setColor(this.color); habit.setArchived(this.archived != 0); diff --git a/android/uhabits-core/src/main/java/org/isoron/uhabits/core/test/HabitFixtures.java b/android/uhabits-core/src/main/java/org/isoron/uhabits/core/test/HabitFixtures.java index 929367fdc..5e1e3edb5 100644 --- a/android/uhabits-core/src/main/java/org/isoron/uhabits/core/test/HabitFixtures.java +++ b/android/uhabits-core/src/main/java/org/isoron/uhabits/core/test/HabitFixtures.java @@ -43,7 +43,7 @@ public class HabitFixtures { Habit habit = modelFactory.buildHabit(); habit.setName("Meditate"); - habit.setDescription("Did you meditate this morning?"); + habit.setQuestion("Did you meditate this morning?"); habit.setColor(3); habit.setFrequency(Frequency.DAILY); saveIfSQLite(habit); @@ -73,7 +73,7 @@ public class HabitFixtures Habit habit = modelFactory.buildHabit(); habit.setType(Habit.NUMBER_HABIT); habit.setName("Run"); - habit.setDescription("How many miles did you run today?"); + habit.setQuestion("How many miles did you run today?"); habit.setUnit("miles"); habit.setTargetType(Habit.AT_LEAST); habit.setTargetValue(2.0); @@ -98,7 +98,7 @@ public class HabitFixtures Habit habit = modelFactory.buildHabit(); habit.setType(Habit.NUMBER_HABIT); habit.setName("Walk"); - habit.setDescription("How many steps did you walk today?"); + habit.setQuestion("How many steps did you walk today?"); habit.setUnit("steps"); habit.setTargetType(Habit.AT_LEAST); habit.setTargetValue(100); @@ -133,7 +133,7 @@ public class HabitFixtures { Habit habit = modelFactory.buildHabit(); habit.setName("Wake up early"); - habit.setDescription("Did you wake up before 6am?"); + habit.setQuestion("Did you wake up before 6am?"); habit.setFrequency(new Frequency(2, 3)); saveIfSQLite(habit); diff --git a/android/uhabits-core/src/main/java/org/isoron/uhabits/core/ui/screens/about/AboutBehavior.java b/android/uhabits-core/src/main/java/org/isoron/uhabits/core/ui/screens/about/AboutBehavior.java deleted file mode 100644 index efd99517a..000000000 --- a/android/uhabits-core/src/main/java/org/isoron/uhabits/core/ui/screens/about/AboutBehavior.java +++ /dev/null @@ -1,105 +0,0 @@ -/* - * Copyright (C) 2017 Álinson Santos Xavier - * - * This file is part of Loop Habit Tracker. - * - * Loop Habit Tracker is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by the - * Free Software Foundation, either version 3 of the License, or (at your - * option) any later version. - * - * Loop Habit Tracker is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see . - */ - -package org.isoron.uhabits.core.ui.screens.about; - -import androidx.annotation.*; - -import org.isoron.uhabits.core.preferences.*; - -import javax.inject.*; - -public class AboutBehavior -{ - private int developerCountdown = 5; - - @NonNull - private Preferences prefs; - - @NonNull - private Screen screen; - - @Inject - public AboutBehavior(@NonNull Preferences prefs, @NonNull Screen screen) - { - this.prefs = prefs; - this.screen = screen; - } - - public void onPressDeveloperCountdown() - { - developerCountdown--; - if (developerCountdown == 0) - { - prefs.setDeveloper(true); - screen.showMessage(Message.YOU_ARE_NOW_A_DEVELOPER); - } - } - - public void onRateApp() - { - screen.showRateAppWebsite(); - } - - public void onSendFeedback() - { - screen.showSendFeedbackScreen(); - } - - public void onTranslateApp() - { - screen.showTranslationWebsite(); - } - - public void onViewSourceCode() - { - screen.showSourceCodeWebsite(); - } - - public void onClickPrivacy() { - screen.showPrivacyPolicyWebsite(); - } - - public void onClickCodeContributors() { - screen.showCodeContributorsWebsite(); - } - - public enum Message - { - YOU_ARE_NOW_A_DEVELOPER - } - - public interface Screen - { - void showMessage(Message message); - - void showRateAppWebsite(); - - void showSendFeedbackScreen(); - - void showSourceCodeWebsite(); - - void showTranslationWebsite(); - - void showPrivacyPolicyWebsite(); - - void showCodeContributorsWebsite(); - } - -} diff --git a/android/uhabits-core/src/main/resources/migrations/23.sql b/android/uhabits-core/src/main/resources/migrations/23.sql new file mode 100644 index 000000000..1592c4e49 --- /dev/null +++ b/android/uhabits-core/src/main/resources/migrations/23.sql @@ -0,0 +1,5 @@ +alter table Habits add column question text; + +update Habits set question = description; + +update Habits set description = ""; \ No newline at end of file diff --git a/android/uhabits-core/src/test/java/org/isoron/uhabits/core/BaseUnitTest.java b/android/uhabits-core/src/test/java/org/isoron/uhabits/core/BaseUnitTest.java index 436e329e6..d16902678 100644 --- a/android/uhabits-core/src/test/java/org/isoron/uhabits/core/BaseUnitTest.java +++ b/android/uhabits-core/src/test/java/org/isoron/uhabits/core/BaseUnitTest.java @@ -125,7 +125,7 @@ public class BaseUnitTest DriverManager.getConnection("jdbc:sqlite::memory:")); db.execute("pragma user_version=8;"); MigrationHelper helper = new MigrationHelper(db); - helper.migrateTo(21); + helper.migrateTo(23); return db; } catch (SQLException e) diff --git a/android/uhabits-core/src/test/java/org/isoron/uhabits/core/database/migrations/Version22Test.java b/android/uhabits-core/src/test/java/org/isoron/uhabits/core/database/migrations/Version22Test.java index 395f06c3f..ff7e0969c 100644 --- a/android/uhabits-core/src/test/java/org/isoron/uhabits/core/database/migrations/Version22Test.java +++ b/android/uhabits-core/src/test/java/org/isoron/uhabits/core/database/migrations/Version22Test.java @@ -159,21 +159,4 @@ public class Version22Test extends BaseUnitTest db.execute("insert into repetitions(habit, timestamp, value)" + "values (0, 100, 5)"); } - - @Test - public void testKeepHabitsUnchanged() throws Exception - { - Habit original = fixtures.createLongHabit(); - Reminder reminder = new Reminder(8, 30, new WeekdayList(100)); - original.setReminder(reminder); - habitList.update(original); - - helper.migrateTo(22); - - ((SQLiteHabitList) habitList).reload(); - Habit modified = habitList.getById(original.getId()); - assertNotNull(modified); - - assertThat(original.getData(), equalTo(modified.getData())); - } } diff --git a/android/uhabits-core/src/test/java/org/isoron/uhabits/core/database/migrations/Version23Test.kt b/android/uhabits-core/src/test/java/org/isoron/uhabits/core/database/migrations/Version23Test.kt new file mode 100644 index 000000000..6dc13cd8d --- /dev/null +++ b/android/uhabits-core/src/test/java/org/isoron/uhabits/core/database/migrations/Version23Test.kt @@ -0,0 +1,63 @@ +package org.isoron.uhabits.core.database.migrations + +import org.hamcrest.MatcherAssert +import org.hamcrest.Matchers +import org.isoron.uhabits.core.BaseUnitTest +import org.isoron.uhabits.core.database.Database +import org.isoron.uhabits.core.database.MigrationHelper +import org.isoron.uhabits.core.models.sqlite.SQLModelFactory +import org.isoron.uhabits.core.test.HabitFixtures +import org.junit.Test + +class Version23Test: BaseUnitTest() { + + private lateinit var db: Database + + private lateinit var helper: MigrationHelper + + override fun setUp() { + super.setUp() + db = openDatabaseResource("/databases/022.db") + helper = MigrationHelper(db) + modelFactory = SQLModelFactory(db) + habitList = modelFactory.buildHabitList() + fixtures = HabitFixtures(modelFactory, habitList) + } + + private fun migrateTo23() = helper.migrateTo(23) + + @Test + fun `test migrate to 23 creates question column`() { + migrateTo23() + val cursor = db.query("select question from Habits") + cursor.moveToNext() + } + + @Test + fun `test migrate to 23 moves description to question column`() { + var cursor = db.query("select description from Habits") + + val descriptions = mutableListOf() + while(cursor.moveToNext()){ + descriptions.add(cursor.getString(0)) + } + + migrateTo23() + cursor = db.query("select question from Habits") + + for(i in 0 until descriptions.size){ + cursor.moveToNext() + MatcherAssert.assertThat(cursor.getString(0), Matchers.equalTo(descriptions[i])) + } + } + + @Test + fun `test migrate to 23 sets description to null`() { + migrateTo23() + val cursor = db.query("select description from Habits") + + while(cursor.moveToNext()){ + MatcherAssert.assertThat(cursor.getString(0), Matchers.equalTo("")) + } + } +} \ No newline at end of file diff --git a/android/uhabits-core/src/test/java/org/isoron/uhabits/core/models/HabitListTest.java b/android/uhabits-core/src/test/java/org/isoron/uhabits/core/models/HabitListTest.java index 206caafe6..a7b490b24 100644 --- a/android/uhabits-core/src/test/java/org/isoron/uhabits/core/models/HabitListTest.java +++ b/android/uhabits-core/src/test/java/org/isoron/uhabits/core/models/HabitListTest.java @@ -218,13 +218,15 @@ public class HabitListTest extends BaseUnitTest Habit h1 = fixtures.createEmptyHabit(); h1.setName("Meditate"); - h1.setDescription("Did you meditate this morning?"); + h1.setQuestion("Did you meditate this morning?"); + h1.setDescription("this is a test description"); h1.setFrequency(Frequency.DAILY); h1.setColor(3); Habit h2 = fixtures.createEmptyHabit(); h2.setName("Wake up early"); - h2.setDescription("Did you wake up before 6am?"); + h2.setQuestion("Did you wake up before 6am?"); + h2.setDescription(""); h2.setFrequency(new Frequency(2, 3)); h2.setColor(5); @@ -232,9 +234,9 @@ public class HabitListTest extends BaseUnitTest list.add(h2); String expectedCSV = - "Position,Name,Description,NumRepetitions,Interval,Color\n" + - "001,Meditate,Did you meditate this morning?,1,1,#FF8F00\n" + - "002,Wake up early,Did you wake up before 6am?,2,3,#AFB42B\n"; + "Position,Name,Question,Description,NumRepetitions,Interval,Color\n" + + "001,Meditate,Did you meditate this morning?,this is a test description,1,1,#FF8F00\n" + + "002,Wake up early,Did you wake up before 6am?,,2,3,#AFB42B\n"; StringWriter writer = new StringWriter(); list.writeCSV(writer); diff --git a/android/uhabits-core/src/test/java/org/isoron/uhabits/core/models/HabitTest.java b/android/uhabits-core/src/test/java/org/isoron/uhabits/core/models/HabitTest.java index f864703fb..89d39dce5 100644 --- a/android/uhabits-core/src/test/java/org/isoron/uhabits/core/models/HabitTest.java +++ b/android/uhabits-core/src/test/java/org/isoron/uhabits/core/models/HabitTest.java @@ -155,7 +155,7 @@ public class HabitTest extends BaseUnitTest " targetValue: 100.0, type: 0, unit: ," + " reminder: {hour: 22, minute: 30," + " days: {weekdays: [true,true,true,true,true,true,true]}}," + - " position: 0}}"; + " position: 0, question: }}"; assertThat(h.toString(), equalTo(expected)); } diff --git a/android/uhabits-core/src/test/java/org/isoron/uhabits/core/models/sqlite/records/HabitRecordTest.java b/android/uhabits-core/src/test/java/org/isoron/uhabits/core/models/sqlite/records/HabitRecordTest.java index 30b92af0a..e6b016a66 100644 --- a/android/uhabits-core/src/test/java/org/isoron/uhabits/core/models/sqlite/records/HabitRecordTest.java +++ b/android/uhabits-core/src/test/java/org/isoron/uhabits/core/models/sqlite/records/HabitRecordTest.java @@ -36,7 +36,7 @@ public class HabitRecordTest extends BaseUnitTest { Habit original = modelFactory.buildHabit(); original.setName("Hello world"); - original.setDescription("Did you greet the world today?"); + original.setQuestion("Did you greet the world today?"); original.setColor(1); original.setArchived(true); original.setFrequency(Frequency.THREE_TIMES_PER_WEEK); @@ -58,7 +58,7 @@ public class HabitRecordTest extends BaseUnitTest { Habit original = modelFactory.buildHabit(); original.setName("Hello world"); - original.setDescription("Did you greet the world today?"); + original.setQuestion("Did you greet the world today?"); original.setColor(5); original.setArchived(false); original.setFrequency(Frequency.DAILY); diff --git a/android/uhabits-core/src/test/java/org/isoron/uhabits/core/ui/screens/about/AboutBehaviorTest.java b/android/uhabits-core/src/test/java/org/isoron/uhabits/core/ui/screens/about/AboutBehaviorTest.java deleted file mode 100644 index 66d791c8d..000000000 --- a/android/uhabits-core/src/test/java/org/isoron/uhabits/core/ui/screens/about/AboutBehaviorTest.java +++ /dev/null @@ -1,95 +0,0 @@ -/* - * Copyright (C) 2017 Álinson Santos Xavier - * - * This file is part of Loop Habit Tracker. - * - * Loop Habit Tracker is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by the - * Free Software Foundation, either version 3 of the License, or (at your - * option) any later version. - * - * Loop Habit Tracker is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY - * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along - * with this program. If not, see . - */ - -package org.isoron.uhabits.core.ui.screens.about; - -import org.isoron.uhabits.core.*; -import org.isoron.uhabits.core.preferences.*; -import org.junit.*; -import org.mockito.*; - -import static org.isoron.uhabits.core.ui.screens.about.AboutBehavior.Message.YOU_ARE_NOW_A_DEVELOPER; -import static org.mockito.Mockito.verify; -import static org.mockito.Mockito.verifyZeroInteractions; - -public class AboutBehaviorTest extends BaseUnitTest -{ - private AboutBehavior behavior; - - @Mock - private Preferences prefs; - - @Mock - private AboutBehavior.Screen screen; - - @Before - public void setUp() throws Exception - { - super.setUp(); - behavior = new AboutBehavior(prefs, screen); - } - - @Test - public void onPressDeveloperCountdown() throws Exception - { - behavior.onPressDeveloperCountdown(); - behavior.onPressDeveloperCountdown(); - behavior.onPressDeveloperCountdown(); - behavior.onPressDeveloperCountdown(); - verifyZeroInteractions(screen); - verifyZeroInteractions(prefs); - - behavior.onPressDeveloperCountdown(); - verify(screen).showMessage(YOU_ARE_NOW_A_DEVELOPER); - verify(prefs).setDeveloper(true); - - behavior.onPressDeveloperCountdown(); - verifyZeroInteractions(screen); - verifyZeroInteractions(prefs); - } - - @Test - public void onRateApp() throws Exception - { - behavior.onRateApp(); - verify(screen).showRateAppWebsite(); - } - - @Test - public void onSendFeedback() throws Exception - { - behavior.onSendFeedback(); - verify(screen).showSendFeedbackScreen(); - } - - @Test - public void onTranslateApp() throws Exception - { - behavior.onTranslateApp(); - verify(screen).showTranslationWebsite(); - } - - @Test - public void onViewSourceCode() throws Exception - { - behavior.onViewSourceCode(); - verify(screen).showSourceCodeWebsite(); - } - -} \ No newline at end of file diff --git a/android/uhabits-core/src/test/resources/databases/022.db b/android/uhabits-core/src/test/resources/databases/022.db new file mode 100644 index 000000000..01237dfc8 Binary files /dev/null and b/android/uhabits-core/src/test/resources/databases/022.db differ diff --git a/core/build.gradle b/core/build.gradle index 3ed4cc0e7..dc545c340 100644 --- a/core/build.gradle +++ b/core/build.gradle @@ -18,7 +18,7 @@ */ plugins { - id 'kotlin-multiplatform' version '1.3.21' + id 'kotlin-multiplatform' version "1.3.72" } repositories { @@ -32,7 +32,11 @@ kotlin { def iosPreset = isIphone ? presets.iosArm64 : presets.iosX64 fromPreset(iosPreset, 'ios') { - compilations.main.outputKinds('FRAMEWORK') + binaries { + framework { + baseName = "LoopHabitTracker" + } + } compilations.main { cinterops { sqlite3 { @@ -61,7 +65,7 @@ kotlin { kotlin { srcDir "src/main/common" } dependencies { implementation kotlin('stdlib-common') - implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core-common:1.2.0-alpha-2' + implementation "$KX_COROUTINES-core-common:$KX_COROUTINES_VERSION" } } @@ -77,7 +81,7 @@ kotlin { kotlin { srcDir "src/main/jvm" } dependencies { implementation kotlin('stdlib-jdk8') - implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.2.0-alpha-2' + implementation "$KX_COROUTINES-core:$KX_COROUTINES_VERSION" } } @@ -94,7 +98,7 @@ kotlin { kotlin { srcDir "src/main/js" } dependencies { implementation kotlin('stdlib-js') - implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core-js:1.2.0-alpha-2' + implementation "$KX_COROUTINES-core-js:$KX_COROUTINES_VERSION" } } @@ -108,36 +112,25 @@ kotlin { iosMain { kotlin { srcDir "src/main/ios" } dependencies { - implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core-native:1.2.0-alpha-2' + implementation "$KX_COROUTINES-core-native:$KX_COROUTINES_VERSION" } } iosTest { kotlin { srcDir "src/test/ios" } dependencies { - implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core-native:1.2.0-alpha-2' + implementation "$KX_COROUTINES-core-native:$KX_COROUTINES_VERSION" } } } task iosTestCopyResources(type: Copy) { - dependsOn 'linkTestIos' from 'assets/test/' from 'assets/main/' - into 'build/bin/ios/testDebugExecutable' + into 'build/bin/ios/debugTest' } - task iosTest { - dependsOn 'linkTestIos', 'iosTestCopyResources' - group = JavaBasePlugin.VERIFICATION_GROUP - description = "Runs tests on iOS simulator" - - doLast { - def emulatorName = "iPhone 8 Plus" - def binary = kotlin.targets.ios.compilations.test.getBinary('EXECUTABLE', 'DEBUG') - exec { - commandLine 'xcrun', 'simctl', 'spawn', emulatorName, binary.absolutePath - } - } + if (project.tasks.findByName('iosTest')) { + iosTest.dependsOn(iosTestCopyResources) } -} \ No newline at end of file +} diff --git a/core/gradle.properties b/core/gradle.properties new file mode 100644 index 000000000..fae8ffca6 --- /dev/null +++ b/core/gradle.properties @@ -0,0 +1,2 @@ +KX_COROUTINES_VERSION=1.3.6 +KX_COROUTINES=org.jetbrains.kotlinx:kotlinx-coroutines \ No newline at end of file diff --git a/core/gradle/wrapper/gradle-wrapper.properties b/core/gradle/wrapper/gradle-wrapper.properties index 48d722f7d..917840c81 100644 --- a/core/gradle/wrapper/gradle-wrapper.properties +++ b/core/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,5 @@ -#Sun Apr 07 10:31:43 CDT 2019 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-5.3.1-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-6.4.1-all.zip diff --git a/core/src/main/common/org/isoron/platform/io/Log.kt b/core/src/main/common/org/isoron/platform/io/Log.kt index f451b99c3..60c372237 100644 --- a/core/src/main/common/org/isoron/platform/io/Log.kt +++ b/core/src/main/common/org/isoron/platform/io/Log.kt @@ -30,14 +30,17 @@ interface Log { */ class StandardLog : Log { override fun warn(tag: String, msg: String) { - println(sprintf("W %-20s %s", tag, msg)) + val ftag = format("%-20s", tag) + println("W $ftag $msg") } override fun info(tag: String, msg: String) { - println(sprintf("I %-20s %s", tag, msg)) + val ftag = format("%-20s", tag) + println("I $ftag $msg") } override fun debug(tag: String, msg: String) { - println(sprintf("D %-20s %s", tag, msg)) + val ftag = format("%-20s", tag) + println("D $ftag $msg") } } \ No newline at end of file diff --git a/core/src/main/common/org/isoron/platform/io/Strings.kt b/core/src/main/common/org/isoron/platform/io/Strings.kt index 986dea9df..1a631e131 100644 --- a/core/src/main/common/org/isoron/platform/io/Strings.kt +++ b/core/src/main/common/org/isoron/platform/io/Strings.kt @@ -19,4 +19,6 @@ package org.isoron.platform.io -expect fun sprintf(format: String, vararg args: Any?): String \ No newline at end of file +expect fun format(format: String, arg: String): String +expect fun format(format: String, arg: Int): String +expect fun format(format: String, arg: Double): String \ No newline at end of file diff --git a/core/src/main/common/org/isoron/uhabits/components/NumberButton.kt b/core/src/main/common/org/isoron/uhabits/components/NumberButton.kt index f228ae1fa..313d6f22d 100644 --- a/core/src/main/common/org/isoron/uhabits/components/NumberButton.kt +++ b/core/src/main/common/org/isoron/uhabits/components/NumberButton.kt @@ -24,22 +24,22 @@ import org.isoron.platform.io.* import kotlin.math.* fun Double.toShortString(): String = when { - this >= 1e9 -> sprintf("%.1fG", this / 1e9) - this >= 1e8 -> sprintf("%.0fM", this / 1e6) - this >= 1e7 -> sprintf("%.1fM", this / 1e6) - this >= 1e6 -> sprintf("%.1fM", this / 1e6) - this >= 1e5 -> sprintf("%.0fk", this / 1e3) - this >= 1e4 -> sprintf("%.1fk", this / 1e3) - this >= 1e3 -> sprintf("%.1fk", this / 1e3) - this >= 1e2 -> sprintf("%.0f", this) + this >= 1e9 -> format("%.1fG", this / 1e9) + this >= 1e8 -> format("%.0fM", this / 1e6) + this >= 1e7 -> format("%.1fM", this / 1e6) + this >= 1e6 -> format("%.1fM", this / 1e6) + this >= 1e5 -> format("%.0fk", this / 1e3) + this >= 1e4 -> format("%.1fk", this / 1e3) + this >= 1e3 -> format("%.1fk", this / 1e3) + this >= 1e2 -> format("%.0f", this) this >= 1e1 -> when { - round(this) == this -> sprintf("%.0f", this) - else -> sprintf("%.1f", this) + round(this) == this -> format("%.0f", this) + else -> format("%.1f", this) } else -> when { - round(this) == this -> sprintf("%.0f", this) - round(this * 10) == this * 10 -> sprintf("%.1f", this) - else -> sprintf("%.2f", this) + round(this) == this -> format("%.0f", this) + round(this * 10) == this * 10 -> format("%.1f", this) + else -> format("%.2f", this) } } diff --git a/core/src/main/common/org/isoron/uhabits/components/Ring.kt b/core/src/main/common/org/isoron/uhabits/components/Ring.kt index f18088022..806770163 100644 --- a/core/src/main/common/org/isoron/uhabits/components/Ring.kt +++ b/core/src/main/common/org/isoron/uhabits/components/Ring.kt @@ -47,7 +47,7 @@ class Ring(val color: Color, if(label) { canvas.setColor(color) canvas.setFontSize(radius * 0.4) - canvas.drawText(sprintf("%.0f%%", percentage * 100), width / 2, height / 2) + canvas.drawText(format("%.0f%%", percentage * 100), width / 2, height / 2) } } } \ No newline at end of file diff --git a/core/src/main/common/org/isoron/uhabits/i18n/StringsArabic.kt b/core/src/main/common/org/isoron/uhabits/i18n/StringsArabic.kt deleted file mode 100644 index d1196c64e..000000000 --- a/core/src/main/common/org/isoron/uhabits/i18n/StringsArabic.kt +++ /dev/null @@ -1,165 +0,0 @@ -// -------------------------------------------------------------------------- -// THIS FILE WAS AUTOMATICALLY GENERATED -// -// Please do not submit pull request to modify it. Corrections to translations -// may be submitted at https://translate.loophabits.org/ -// -------------------------------------------------------------------------- - -package org.isoron.uhabits.i18n - -class StringsArabic : Strings() { - override val app_name = "متعقب العادة لووب" - override val main_activity_title = "عادات" - override val action_settings = "إعدادات" - override val edit = "تعديل" - override val delete = "حذف" - override val archive = "أرشفة" - override val unarchive = "إزالة من الأرشيف" - override val add_habit = "إضافة عادة" - override val color_picker_default_title = "تغيير اللون" - override val toast_habit_created = "تم إنشاء عادة" - override val toast_habit_deleted = "تم حذف العادات" - override val toast_habit_restored = "تم إستعادة العادات" - override val toast_nothing_to_undo = "لا شيء للألغاء" - override val toast_nothing_to_redo = "لا شيء للإعادة" - override val toast_habit_changed = "تم تغيير عادة" - override val toast_habit_changed_back = "تم أرجاع العادة إلى أصلها" - override val toast_habit_archived = "تم أرشفه العادات" - override val toast_habit_unarchived = "تم الغاء ارشفه العادات" - override val overview = "نظرة عامة" - override val habit_strength = "قوة العادة" - override val history = "السجل" - override val clear = "إزالة" - override val description_hint = "السؤال (هل ... اليوم؟)" - override val repeat = "كرره" - override val times_every = "مرات كل" - override val days = "أيام" - override val reminder = "التذكرة" - override val discard = "تجاهل" - override val save = "حفظ" - override val streaks = "الانجازات" - override val no_habits_found = "لا يوجد لديك عادات مفعلة" - override val long_press_to_toggle = "أضغط و إستمر لتحقق أو ازل" - override val reminder_off = "إيقاف" - override val validation_name_should_not_be_blank = "لا يمكن أن يكون الإسم فارغ" - override val validation_number_should_be_positive = "يجب أن يكون الرقم موجب." - override val validation_at_most_one_rep_per_day = "يجب أن يكون التكرار مرة واحدة فقط كل يوم" - override val create_habit = "انشاء العادة" - override val edit_habit = "تعديل العادة" - override val check = "حقق" - override val snooze = "لاحقاً" - override val intro_title_1 = "أهلا بك" - override val intro_description_1 = "لوب يساعدك في بدأ عادات جيدة والحفاظ عليها." - override val intro_title_2 = "إنشاء عادات جديدة" - override val intro_description_2 = "كل يوم، بعد أداء عادتك، ضع علامة عليها في التطبيق." - override val intro_title_3 = "حافظ على القيام بذلك" - override val intro_description_3 = "العادة المستمرة لفترة طويلة تكسب نجمة كامله." - override val intro_title_4 = "تتبع اداءك" - override val intro_description_4 = "رسوم بيانية مفصلة تُريك كيف تحسنت عاداتك مع مرور الوقت." - override val interval_15_minutes = "15 دقيقة" - override val interval_30_minutes = "30 دقيقة" - override val interval_1_hour = "ساعة واحدة" - override val interval_2_hour = "ساعتان" - override val interval_4_hour = "٤ ساعات" - override val interval_8_hour = "8 ساعات" - override val interval_24_hour = "٢٤ ساعة" - override val pref_toggle_title = "تبديل وضعية العادة بضغطة قصيرة" - override val pref_toggle_description = "أكثر سهولة، لكنه ممكن يسبب كبسات غير مقصوده" - override val pref_snooze_interval_title = "فترتي الغفوى على التذكير" - override val pref_rate_this_app = "تقييم هذا التطبيق على جوجل بلاي" - override val pref_send_feedback = "أرسل الملاحظات إلى المطور" - override val pref_view_source_code = "إفحص التعليمات البرمجية على GitHub" - override val pref_view_app_introduction = "عرض المقدمه" - override val links = "روابط" - override val behavior = "سلوك" - override val name = "اسم" - override val settings = "إعدادات" - override val snooze_interval = "فترتي الغفوه" - override val hint_title = "هل كنت تعلم؟" - override val hint_drag = "لإعادة ترتيب القوائم، أضغط اسم من هذه العادة، ثم اسحبه إلى المكان الصحيح." - override val hint_landscape = "يمكنك ان ترى المزيد أيام عن طريق وضع الهاتف في وضع أفقي." - override val delete_habits = "حذف عادات" - override val delete_habits_message = "سيتم حذف عادات بشكل دائم. هذا العمل لا يمكن التراجع عنه." - override val habit_not_found = "العادة حذفت/لم يتم العثور عليها" - override val weekends = "عطلة نهاية الأسبوع" - override val any_weekday = "أيام الأسبوع" - override val any_day = "أي يوم" - override val select_weekdays = "إختار أيام " - override val export_to_csv = "تصدير البيانات (CSV)" - override val done_label = "منجز" - override val clear_label = "نظف" - override val select_hours = "تحديد ساعات" - override val select_minutes = "تحديد دقائق " - override val about = "معلومات حول" - override val translators = "المترجمين" - override val developers = "المطورين" - override val version_n = "الإصدار %s" - override val frequency = "تردد" - override val checkmark = "علامة الاختيار" - override val strength = "القوة" - override val best_streaks = "أكثر تقدم" - override val current_streaks = "تقدم الحالي" - override val number_of_repetitions = "عدد من حالات التكرار" - override val last_x_days = "آخر %d أيام" - override val last_x_weeks = "آخر %d أسابيع" - override val last_x_months = "آخر %d أشهر" - override val last_x_years = "آخر %d سنين" - override val all_time = "كل الوقت" - override val every_day = "كل يوم" - override val every_week = "كل اسبوع" - override val two_times_per_week = "مرتين في الأسبوع" - override val five_times_per_week = "خمس مرات في الأسبوع" - override val custom_frequency = "مخصص..." - override val help = "مساعدة والأسئلة المتداولة" - override val could_not_export = "فشل في تصدير البيانات." - override val could_not_import = "فشل في استيراد البيانات." - override val file_not_recognized = "الملف غير المعترف." - override val habits_imported = "نجح إستيراد العادات." - override val full_backup_success = "نجح تصدير النسخ الاحتياطي الكامل." - override val import_data = "استيراد بيانات." - override val export_full_backup = "صدر نسخة احتياطية كاملة." - override val import_data_summary = "تدعم النسخ الاحتياطي الكامل المصدرة من هذا التطبيق، فضلا عن الملفات التي تم إنشاؤها من Tickmate, HabitBull و Rewire. انظر التعليمات لمزيد من المعلومات." - override val export_as_csv_summary = "صدر ملف التي يمكن فتحها ببرنامج جداول البيانات مثل إكسل أو وبينوفيس. لا يمكن إستيراد هذا الملف." - override val export_full_backup_summary = "إنشاء ملف يحتوي على كافة البيانات. يمكن استيراد هذا الملف نفسه." - override val bug_report_failed = "فشل في توليد تقرير الاعطال" - override val generate_bug_report = "توليد تقرير الاعطال" - override val troubleshooting = "استكشاف الأخطاء وإصلاحها" - override val help_translate = "المساعدة في ترجمة هذا البرنامج" - override val night_mode = "الوضع الليلي" - override val use_pure_black = "استخدام أسود نقي في الوضع الليلي" - override val pure_black_description = "يستبدل خلفيات رمادية مع أسود نقي في الوضع الليلي. يقلل من استهلاك البطارية في الهواتف مع شاشة AMOLED." - override val interface_preferences = "السطح البيني" - override val reverse_days = "ترتيب عكسي أيام" - override val reverse_days_description = "عرض أيام في ترتيب عكسي على الشاشة الرئيسية" - override val day = "يوم" - override val week = "أسبوع" - override val month = "شهر" - override val quarter = "ربع سنه" - override val year = "عام" - override val total = "المجموع" - override val time_every = "مرات في" - override val every_x_days = "كل %d أيام" - override val every_x_weeks = "كل %d أسابيع" - override val every_x_months = "كل %d أشهر" - override val score = "النقاط" - override val reminder_sound = "صوت تذكير" - override val none = "صامت" - override val filter = "تصنيف" - override val hide_completed = "إخفاء المكتملة" - override val hide_archived = "إخفاء المؤرشفة" - override val sticky_notifications = "جعل الإشعارات ثابتة" - override val sticky_notifications_description = "منع الإشعارات من تمريرها بعيداً." - override val repair_database = "إصلاح قاعدة البيانات" - override val database_repaired = "تم إصلاح قاعدة البيانات." - override val uncheck = "إلغاء تحديد" - override val toggle = "تبديل" - override val action = "عمل" - override val habit = "عادة" - override val sort = "فرز" - override val manually = "يدوياً" - override val by_name = "حسب الإسم" - override val by_color = "حسب اللون" - override val by_score = "حسب النقاط" - override val download = "تحميل" - override val export = "استخراج" -} diff --git a/core/src/main/common/org/isoron/uhabits/i18n/StringsBasque.kt b/core/src/main/common/org/isoron/uhabits/i18n/StringsBasque.kt deleted file mode 100644 index 8b77d6fb0..000000000 --- a/core/src/main/common/org/isoron/uhabits/i18n/StringsBasque.kt +++ /dev/null @@ -1,165 +0,0 @@ -// -------------------------------------------------------------------------- -// THIS FILE WAS AUTOMATICALLY GENERATED -// -// Please do not submit pull request to modify it. Corrections to translations -// may be submitted at https://translate.loophabits.org/ -// -------------------------------------------------------------------------- - -package org.isoron.uhabits.i18n - -class StringsBasque : Strings() { - override val app_name = "Loop Habit Tracker" - override val main_activity_title = "Ohiturak" - override val action_settings = "Ezarpenak" - override val edit = "Editatu" - override val delete = "Ezabatu" - override val archive = "Artxibatu" - override val unarchive = "Desartxibatu" - override val add_habit = "Gehitu ohitura" - override val color_picker_default_title = "Kolorea aldatu" - override val toast_habit_created = "Ohitura sortu da" - override val toast_habit_deleted = "Ohiturak ezabatu dira" - override val toast_habit_restored = "Ohiturak berrezarri dira" - override val toast_nothing_to_undo = "Ez dago ezer desegiteko" - override val toast_nothing_to_redo = "Ez dago ezer berregiteko" - override val toast_habit_changed = "Ohitura aldatu egin da" - override val toast_habit_changed_back = "Ohitura berrezarri da" - override val toast_habit_archived = "Ohiturak artxibatu dira" - override val toast_habit_unarchived = "Ohiturak desartxibatu dira" - override val overview = "Ikuspegi orokorra" - override val habit_strength = "Ohituraren indarra" - override val history = "Historia" - override val clear = "Garbitu" - override val description_hint = "Galdera (... al duzu gaur?)" - override val repeat = "Errepikatu" - override val times_every = "aldiz" - override val days = "egunetan" - override val reminder = "Oroigarria" - override val discard = "Baztertu" - override val save = "Gorde" - override val streaks = "Boladak" - override val no_habits_found = "Ez duzu ohitura aktiborik" - override val long_press_to_toggle = "Sakatu eta mantendu markatu edo desmarkatzeko" - override val reminder_off = "Itzalita" - override val validation_name_should_not_be_blank = "Izena ezin da hutsik egon." - override val validation_number_should_be_positive = "Zenbakia positiboa izan behar da." - override val validation_at_most_one_rep_per_day = "Gehienez errepikapen bat eguneko izan dezakezu" - override val create_habit = "Ohitura sortu" - override val edit_habit = "Ohitura editatu" - override val check = "Markatu" - override val snooze = "Geroago" - override val intro_title_1 = "Ongi etorri" - override val intro_description_1 = "Loop Habit Tracker-ek ohitura onak hartzen eta mantentzen laguntzen dizu." - override val intro_title_2 = "Sor itzazu ohitura berri batzuk" - override val intro_description_2 = "Egunero, zure ohitura egin ostean, jarri ezazu egiaztatze marka bat aplikazioan." - override val intro_title_3 = "Jarrai ezazu ohitura egiten" - override val intro_description_3 = "Denbora luzean zehar trinkotasunez egindako ohiturek izar oso bat irabaziko dute." - override val intro_title_4 = "Jarrai ezazu zure aurrerapena" - override val intro_description_4 = "Grafiko zehatzen bitartez denboran zehar zure ohiturak nola hobetu diren ikus ditzakezu" - override val interval_15_minutes = "15 minutu" - override val interval_30_minutes = "30 minutu" - override val interval_1_hour = "Ordu 1" - override val interval_2_hour = "2 ordu" - override val interval_4_hour = "4 ordu" - override val interval_8_hour = "8 ordu" - override val interval_24_hour = "24 ordu" - override val pref_toggle_title = "Ukitze laburrarekin markatu" - override val pref_toggle_description = "Ukitze bakar batekin marka jartzen du ukitu eta mantendu egin beharrean. Erosoagoa, baina nahi gabeko markak ekar litzake." - override val pref_snooze_interval_title = "Atzeratze tartea oroigarrietan" - override val pref_rate_this_app = "Aplikazio hau Google Playen puntuatu" - override val pref_send_feedback = "Zure iritzia garatzaileari bidali" - override val pref_view_source_code = "Iturburu kodea GitHuben ikusi" - override val pref_view_app_introduction = "Aplikazioaren aurkezpena ikusi" - override val links = "Loturak" - override val behavior = "Portaera" - override val name = "Izena" - override val settings = "Ezarpenak" - override val snooze_interval = "Atzeratze tartea" - override val hint_title = "Ba al zenekien?" - override val hint_drag = "Sarrerak berrantolatzeko, sakatu eta mantendu ohituraren izena, ondoren mugi ezazu leku aproposera." - override val hint_landscape = "Egun gehiago ikus ditzakezu zure gailua paisai moduan jarriz." - override val delete_habits = "Ohiturak ezabatu" - override val delete_habits_message = "Ohiturak betirako ezabatuko dira. Ekintza hau ezin da desegin." - override val habit_not_found = "Ohitura ezabatua / ez aurkitua" - override val weekends = "Asteburuak" - override val any_weekday = "Astelehenetik ostiralera" - override val any_day = "Astearen edozen egun" - override val select_weekdays = "Egunak hautatu" - override val export_to_csv = "CSV bezala esportatu" - override val done_label = "Eginda" - override val clear_label = "Garbitu" - override val select_hours = "Orduak hautatu" - override val select_minutes = "Minutuak hautatu" - override val about = "Honi buruz" - override val translators = "Itzultzaileak" - override val developers = "Garatzaileak" - override val version_n = "%s bertsioa" - override val frequency = "Maiztasuna" - override val checkmark = "Egiaztatze marka" - override val strength = "Indarra" - override val best_streaks = "Bolada onenak" - override val current_streaks = "Uneko bolada" - override val number_of_repetitions = "Errepikapenen kopurua" - override val last_x_days = "Azken %d egunak" - override val last_x_weeks = "Azken %d asteak" - override val last_x_months = "Azken %d hilabeteak" - override val last_x_years = "Azken %d urteak" - override val all_time = "Hasieratik" - override val every_day = "Egunero" - override val every_week = "Astero" - override val two_times_per_week = "Astean 2 aldiz" - override val five_times_per_week = "Astean 5 aldiz" - override val custom_frequency = "Pertsonalizatua ..." - override val help = "Laguntza eta ohiko galderak" - override val could_not_export = "Huts datuak esportatzerakoan." - override val could_not_import = "Huts datuak inportatzerakoan." - override val file_not_recognized = "Fitxategi ezezaguna." - override val habits_imported = "Ohiturak ondo inportatu dira." - override val full_backup_success = "Babes kopia osoa ondo esportatu da." - override val import_data = "Datuak inportatu" - override val export_full_backup = "Babes kopia osoa esportatu" - override val import_data_summary = "Aplikazio honek esportatutako babes kopia osoak onartzen dira, baita Tickmate, HabitBull edo Rewirek sortutako fitxategiak ere. Ikusi ohito galderak informazio gehiago lortzeko." - override val export_as_csv_summary = "Microsoft Excel edo OpenOffice Calc bezalako kalkulu orrietarako softwareak ireki dezaketen fitxategiak sortzen ditu. Fitxategi hau ezin da berriz inportatu." - override val export_full_backup_summary = "Zure datu guztiak dituen fitxategi bat sortzen du. Fitxategi hau ezin da berriz inportatu." - override val bug_report_failed = "Huts akats txostena sortzerakoan." - override val generate_bug_report = "Akats txostena sortu" - override val troubleshooting = "Arazoen konponketa" - override val help_translate = "Lagundu aplikazio hau itzultzen" - override val night_mode = "Gau modua" - override val use_pure_black = "Benetazko beltza erabili gau moduan" - override val pure_black_description = "Atzeko plano grisak beltz hutsez aldatzen ditu gau moduan. Bateriaren erabilera gutxitzen du AMOLED duten gailuetan." - override val interface_preferences = "Interfazea" - override val reverse_days = "Egunak atzekoz aurrera ordenatu" - override val reverse_days_description = "Pantaila nagusian egunak atzekoz aurrera ikusi" - override val day = "Eguna" - override val week = "Astea" - override val month = "Hilabetea" - override val quarter = "Hiruhilekoa" - override val year = "Urtea" - override val total = "Guztira" - override val time_every = "denbora" - override val every_x_days = "%d egunero" - override val every_x_weeks = "%d astero" - override val every_x_months = "%d hilabetero" - override val score = "Puntuak" - override val reminder_sound = "Oroigarriaren soinua" - override val none = "Bat ere ez" - override val filter = "Iragazkia" - override val hide_completed = "Ezkutatu lortutakoak" - override val hide_archived = "Artxibatutakoak ezkutatu" - override val sticky_notifications = "Jakinarazpenak itsaskorrak bihurtu" - override val sticky_notifications_description = "Jakinarazpenak keinu batez ezabatzea sahiesten du." - override val repair_database = "Datu basea konpondu" - override val database_repaired = "Datu basea konpondu da." - override val uncheck = "Desmarkatu" - override val toggle = "Aldatu" - override val action = "Ekintza" - override val habit = "Ohitura" - override val sort = "Ordenatu" - override val manually = "Eskuz" - override val by_name = "Izenaren arabera" - override val by_color = "Kolorearen arabera" - override val by_score = "Puntuen arabera" - override val download = "Deskargatu" - override val export = "Esportatu" -} diff --git a/core/src/main/common/org/isoron/uhabits/i18n/StringsBulgarian.kt b/core/src/main/common/org/isoron/uhabits/i18n/StringsBulgarian.kt deleted file mode 100644 index b2bacab91..000000000 --- a/core/src/main/common/org/isoron/uhabits/i18n/StringsBulgarian.kt +++ /dev/null @@ -1,165 +0,0 @@ -// -------------------------------------------------------------------------- -// THIS FILE WAS AUTOMATICALLY GENERATED -// -// Please do not submit pull request to modify it. Corrections to translations -// may be submitted at https://translate.loophabits.org/ -// -------------------------------------------------------------------------- - -package org.isoron.uhabits.i18n - -class StringsBulgarian : Strings() { - override val app_name = "Loop Следене на навици" - override val main_activity_title = "Навици" - override val action_settings = "Настройки" - override val edit = "Редактиране" - override val delete = "Изтриване" - override val archive = "Архивиране" - override val unarchive = "Разархивиране" - override val add_habit = "Добавяне на навик" - override val color_picker_default_title = "Промяна на цвят" - override val toast_habit_created = "Навикът е създаден" - override val toast_habit_deleted = "Навиците са изтрити" - override val toast_habit_restored = "Навиците са възстановени" - override val toast_nothing_to_undo = "Нищо за отмяна" - override val toast_nothing_to_redo = "Нищо за възстановяване" - override val toast_habit_changed = "Навикът е променен" - override val toast_habit_changed_back = "Промяната на навика е отменена." - override val toast_habit_archived = "Навиците са архивирани" - override val toast_habit_unarchived = "Навиците са разархивирани" - override val overview = "Обзор" - override val habit_strength = "Сила на навика" - override val history = "История" - override val clear = "Изчистване" - override val description_hint = "Въпрос (Днес, ... ли?)" - override val repeat = "Повтори" - override val times_every = "пъти в период от" - override val days = "дни" - override val reminder = "Напомняне" - override val discard = "Отказ" - override val save = "Запазване" - override val streaks = "Поредици" - override val no_habits_found = "Нямате активни навици" - override val long_press_to_toggle = "Натиснете и задръжте за да добавите или премахнете отметка" - override val reminder_off = "Изключено" - override val validation_name_should_not_be_blank = "Името не може да бъде празно." - override val validation_number_should_be_positive = "Числото трябва да е положително." - override val validation_at_most_one_rep_per_day = "Позволено е до едно повторение на ден." - override val create_habit = "Създаване на навик" - override val edit_habit = "Редактиране на навик" - override val check = "Поставяне на отметка" - override val snooze = "По-късно" - override val intro_title_1 = "Добре дошли" - override val intro_description_1 = "Loop Следене на навици ви помага да създавате и поддържате добри навици." - override val intro_title_2 = "Създайте нови навици" - override val intro_description_2 = "Всеки ден, след изпълнението на навика, поставете отметка в приложението." - override val intro_title_3 = "Продължавайте да го изпълнявате" - override val intro_description_3 = "Навици изпълнявани редовно за дълго време ще ви спечелят пълна звезда." - override val intro_title_4 = "Следете напредъка си" - override val intro_description_4 = "Подробни диаграми ви показват как вашите навици са се подобрили с времето." - override val interval_15_minutes = "15 минути" - override val interval_30_minutes = "30 минути" - override val interval_1_hour = "1 час" - override val interval_2_hour = "2 часа" - override val interval_4_hour = "4 часа" - override val interval_8_hour = "8 часа" - override val interval_24_hour = "24 часа" - override val pref_toggle_title = "Маркиране с кратко натискане" - override val pref_toggle_description = "Поставяне на отметки с кратко натискане вместо с натискане и задържане. По-удобно, но може да доведе до неволно маркиране." - override val pref_snooze_interval_title = "Интервал на напомняне след отлагане" - override val pref_rate_this_app = "Оценяване на това приложение в Google Play" - override val pref_send_feedback = "Изпращане на отзиви към разработчика" - override val pref_view_source_code = "Преглед на програмния код в GitHub" - override val pref_view_app_introduction = "Преглед на въведение в приложението" - override val links = "Препратки" - override val behavior = "Поведение" - override val name = "Име" - override val settings = "Настройки" - override val snooze_interval = "Интервал на отлагане" - override val hint_title = "Знаете ли че?" - override val hint_drag = "За да пренаредите записите, натиснете и задръжте върху името на навика и го придърпайте до правилното място." - override val hint_landscape = "Може да виждате повече дни като обърнете телефона си в хоризонтално положение." - override val delete_habits = "Изтриване на навици" - override val delete_habits_message = "Навиците ще се изтрият перманентно. Това действие не може да бъде отменено." - override val habit_not_found = "Навикът е изтрит / не е намерен" - override val weekends = "Събота и неделя" - override val any_weekday = "От понеделник до петък" - override val any_day = "Всеки ден от седмицата" - override val select_weekdays = "Избор на дни" - override val export_to_csv = "Експортиране като CSV" - override val done_label = "Готово" - override val clear_label = "Изчистване" - override val select_hours = "Избиране на час" - override val select_minutes = "Избиране на минута" - override val about = "За приложението" - override val translators = "Преводачи" - override val developers = "Разработчици" - override val version_n = "Версия %s" - override val frequency = "Честота" - override val checkmark = "Отметка" - override val strength = "Сила" - override val best_streaks = "Най-добри поредици" - override val current_streaks = "Текуща поредица" - override val number_of_repetitions = "Брой повторения" - override val last_x_days = "Последните %d дни" - override val last_x_weeks = "Последните %d седмици" - override val last_x_months = "Последните %d месеци" - override val last_x_years = "Последните %d години" - override val all_time = "От началото" - override val every_day = "Всеки ден" - override val every_week = "Всяка седмица" - override val two_times_per_week = "2 пъти седмично" - override val five_times_per_week = "5 пъти седмично" - override val custom_frequency = "Друго ..." - override val help = "Помощ & ЧЗВ" - override val could_not_export = "Неуспешно експортиране на данни." - override val could_not_import = "Неуспешно импортиране на данни." - override val file_not_recognized = "Файлът не е разпознат." - override val habits_imported = "Навиците са импортирани успешно." - override val full_backup_success = "Пълно резервно копие е експортирано успешно." - override val import_data = "Импортиране на данни" - override val export_full_backup = "Експортиране на пълно резервно копие" - override val import_data_summary = "Поддържа пълни резервни копия експортирани чрез това приложение, както и файлове генерирани чрез Tickmate, HabitBull или Rewire. Вижте ЧЗВ за повече информация." - override val export_as_csv_summary = "Генерира файлове, които могат да се отварят със софтуер за електронни таблици като Microsoft Excel или OpenOffice Calc. Този файл не може да се импортира обратно." - override val export_full_backup_summary = "Генерира файл, който съдържа всичките ви данни. Този файл може да бъде импортиран обратно." - override val bug_report_failed = "Неуспешно генериране на доклад за грешки." - override val generate_bug_report = "Генериране на доклад за грешки" - override val troubleshooting = "Отстраняване на проблеми" - override val help_translate = "Помагане за превода на това приложение" - override val night_mode = "Нощен режим" - override val use_pure_black = "Използване на чисто черно при нощен режим" - override val pure_black_description = "Заменя сивите фонове с чисто черни при нощен режим. Намаля разхода на батерията при телефони с AMOLED дисплеи." - override val interface_preferences = "Интерфейс" - override val reverse_days = "Обратен ред на дните" - override val reverse_days_description = "Показва дните на основния екран в обратен ред" - override val day = "Ден" - override val week = "Седмица" - override val month = "Месец" - override val quarter = "Тримесечие" - override val year = "Година" - override val total = "Общо" - override val time_every = "път в период от" - override val every_x_days = "На всеки %d дни" - override val every_x_weeks = "На всеки %d седмици" - override val every_x_months = "На всеки %d месеца" - override val score = "Сила" - override val reminder_sound = "Звук за напомняне" - override val none = "Няма" - override val filter = "Филтър" - override val hide_completed = "Скриване на завършените" - override val hide_archived = "Скриване на архивираните" - override val sticky_notifications = "Направи нотификациите постоянни" - override val sticky_notifications_description = "Предотвратява изчистването на нотификацията с плъзване настрани." - override val repair_database = "Поправка на базата данни" - override val database_repaired = "Базата данни е поправена." - override val uncheck = "Премахване на отметка" - override val toggle = "Смяна" - override val action = "Действие" - override val habit = "Навик" - override val sort = "Сортиране" - override val manually = "Ръчно" - override val by_name = "По име" - override val by_color = "По цвят" - override val by_score = "По сила" - override val download = "Изтегляне" - override val export = "Експортиране" -} diff --git a/core/src/main/common/org/isoron/uhabits/i18n/StringsCatalan.kt b/core/src/main/common/org/isoron/uhabits/i18n/StringsCatalan.kt deleted file mode 100644 index e48e4b20e..000000000 --- a/core/src/main/common/org/isoron/uhabits/i18n/StringsCatalan.kt +++ /dev/null @@ -1,148 +0,0 @@ -// -------------------------------------------------------------------------- -// THIS FILE WAS AUTOMATICALLY GENERATED -// -// Please do not submit pull request to modify it. Corrections to translations -// may be submitted at https://translate.loophabits.org/ -// -------------------------------------------------------------------------- - -package org.isoron.uhabits.i18n - -class StringsCatalan : Strings() { - override val main_activity_title = "Hàbits" - override val action_settings = "Ajustaments" - override val edit = "Editar" - override val delete = "Esborrar" - override val archive = "Arxivar" - override val unarchive = "Treure de l\'arxiu" - override val add_habit = "Afegir hàbit" - override val color_picker_default_title = "Canviar color" - override val toast_habit_created = "Hàbit creat." - override val toast_habit_deleted = "Hàbits esborrats." - override val toast_habit_restored = "Hàbits restaurats." - override val toast_nothing_to_undo = "Res a desfer." - override val toast_nothing_to_redo = "Res a refer." - override val toast_habit_changed = "Hàbit modificat." - override val toast_habit_changed_back = "Hàbit restaurat." - override val toast_habit_archived = "Hàbits arxivats." - override val toast_habit_unarchived = "Hàbits trets de l\'arxiu." - override val overview = "Visió general" - override val habit_strength = "Fortalesa de l\'hàbit" - override val history = "Història" - override val clear = "Netejar" - override val description_hint = "Pregunta (Avui vas...?)" - override val repeat = "Repetir" - override val times_every = "vegades en" - override val days = "dies" - override val reminder = "Recordatori" - override val discard = "Descartar" - override val save = "Desar" - override val streaks = "Ratxa" - override val no_habits_found = "No tens hàbits actius" - override val long_press_to_toggle = "Prem i manté per a marcar o desmarcar" - override val reminder_off = "Desactivat" - override val validation_name_should_not_be_blank = "El nom no pot estar buit" - override val validation_number_should_be_positive = "El número ha de ser positiu" - override val validation_at_most_one_rep_per_day = "Pots tenir com a màxim una repetició per dia" - override val create_habit = "Crear hàbit" - override val edit_habit = "Editar hàbit" - override val check = "Revisar" - override val snooze = "Més tard" - override val intro_title_1 = "Benvingut" - override val intro_description_1 = "Loop Habit Tracker t\'ajuda a crear i mantenir bons hàbits" - override val intro_title_2 = "Crear alguns hàbits nous" - override val intro_description_2 = "Cada dia, després de complir el teu hàbit, posa una marca amb la app" - override val intro_title_3 = "Continua fent-ho" - override val intro_description_3 = "Els hàbits que facis consistentment durant una llarga temporada obtindran una estrella" - override val intro_title_4 = "Segueix el teu progrès" - override val intro_description_4 = "Els gràfics detallats et mostren com han mirollat els teus hàbits al llarg del temps" - override val interval_15_minutes = "15 minuts" - override val interval_30_minutes = "30 minuts" - override val interval_1_hour = "1 hora" - override val interval_2_hour = "2 hores" - override val interval_4_hour = "4 hores" - override val interval_8_hour = "8 hores" - override val interval_24_hour = "24 hores" - override val pref_toggle_title = "Activar/desactivar repeticions prement curt" - override val pref_toggle_description = "Més adequat, però pot causar activacions accidentals" - override val pref_snooze_interval_title = "Interval d\'endarreriment en recordatoris" - override val pref_rate_this_app = "Valora aquesta app a Google Play" - override val pref_send_feedback = "Enviar resposta al desenvolupador" - override val pref_view_source_code = "Veure codi font a Github" - override val pref_view_app_introduction = "Veure introducció de l\'app" - override val links = "Enllaços" - override val behavior = "Comportament" - override val name = "Nom" - override val settings = "Ajustaments" - override val snooze_interval = "Interval d\'endarreriment" - override val hint_title = "Ho sabies?" - override val hint_drag = "Per a ordenar les entrades, prem i mantè sobre el nom de l\'hàbit, després arrossega\'l al lloc correcte." - override val hint_landscape = "Pots veure més dies posant el teu telèfon en orientació apaisada." - override val delete_habits = "Esborrar hàbits" - override val delete_habits_message = "Els hàbits seran esborrats permanentment. Aquesta acció no es pot desfer." - override val weekends = "Caps de setmana" - override val any_weekday = "Dilluns a divendres" - override val any_day = "Qualsevol dia de la setmana" - override val select_weekdays = "Selecciona els dies" - override val export_to_csv = "Exportar a CSV" - override val done_label = "Fet" - override val clear_label = "Treure" - override val select_hours = "Selecciona les hores" - override val select_minutes = "Selecciona els minuts" - override val about = "En quant a" - override val translators = "Traductors" - override val developers = "Desenvolupadors" - override val version_n = "Versió %s" - override val frequency = "Freqüència" - override val checkmark = "Marca" - override val strength = "Fortalesa" - override val best_streaks = "Millors ratxes" - override val current_streaks = "Ratxa actual" - override val number_of_repetitions = "Nombre de repeticions" - override val last_x_days = "Últims %d dies" - override val last_x_weeks = "Últimes %d setmanes" - override val last_x_months = "Últims %d mesos" - override val last_x_years = "Últims %d anys" - override val all_time = "Tot el temps" - override val every_day = "Cada dia" - override val every_week = "Cada setmana" - override val two_times_per_week = "2 cops per setmana" - override val five_times_per_week = "5 cops per setmana" - override val custom_frequency = "Personalitzar ..." - override val help = "Ajuda i Preguntes Freqüents" - override val could_not_export = "Error exportant dades." - override val could_not_import = "Error important dades." - override val file_not_recognized = "Fitxer no reconegut." - override val habits_imported = "Hàbits importats correctament." - override val full_backup_success = "Còpia de seguretat sencera exportada satisfactòriament." - override val import_data = "Importar dades" - override val export_full_backup = "Exportar còpia de seguretat sencera" - override val import_data_summary = "Suporta còpies de seguretat exportades per aquesta app, també fitxers generats per Tickmate, HabitBull o Rewire. Mira les Preguntes Freqüents per a més informació." - override val export_as_csv_summary = "Genera fitxers que poden ser oberts per programari de fulles de càlcul, com ara Microsoft Excel o OpenOffice Calc. Aquest fitxer no pot tornar-se a importar." - override val export_full_backup_summary = "Genera un fitxer que contè totes les teves dades. Aquest fitxer pot tornar-se a importar." - override val bug_report_failed = "Ha fallat la generació de l\'informe d\'error." - override val generate_bug_report = "Generar informe d\'error" - override val troubleshooting = "Resolució de problemes" - override val help_translate = "Ajuda a traduïr aquesta app" - override val night_mode = "Mode nocturn" - override val use_pure_black = "Utilitzar negre pur en el mode nocturn" - override val pure_black_description = "Reemplaça fons grisos per negre pur en el mode nocturn. Redueix consum de bateria en telèfons amb pantalla AMOLED." - override val interface_preferences = "Interfície" - override val reverse_days = "Ordre invers de dies" - override val reverse_days_description = "Mostra els dies en ordre invers en la pantalla principal" - override val day = "Dia" - override val week = "Setmana" - override val month = "Mes" - override val quarter = "Quatrimestre" - override val year = "Any" - override val time_every = "vegades en" - override val every_x_days = "Cada %d dies" - override val every_x_weeks = "Cada %d setmanes" - override val every_x_months = "Cada %d mesos" - override val score = "Puntuació" - override val reminder_sound = "So de recordatori" - override val none = "Cap" - override val filter = "Filtre" - override val action = "Acció" - override val habit = "Hàbit" - override val export = "Exportar" -} diff --git a/core/src/main/common/org/isoron/uhabits/i18n/StringsChineseCN.kt b/core/src/main/common/org/isoron/uhabits/i18n/StringsChineseCN.kt deleted file mode 100644 index bbe2d9f4d..000000000 --- a/core/src/main/common/org/isoron/uhabits/i18n/StringsChineseCN.kt +++ /dev/null @@ -1,165 +0,0 @@ -// -------------------------------------------------------------------------- -// THIS FILE WAS AUTOMATICALLY GENERATED -// -// Please do not submit pull request to modify it. Corrections to translations -// may be submitted at https://translate.loophabits.org/ -// -------------------------------------------------------------------------- - -package org.isoron.uhabits.i18n - -class StringsChineseCN : Strings() { - override val app_name = "循环习惯记录" - override val main_activity_title = "习惯" - override val action_settings = "设置" - override val edit = "编辑" - override val delete = "删除" - override val archive = "存档" - override val unarchive = "取消存档" - override val add_habit = "添加新习惯" - override val color_picker_default_title = "选择颜色" - override val toast_habit_created = "习惯已创建" - override val toast_habit_deleted = "习惯已删除" - override val toast_habit_restored = "习惯已恢复" - override val toast_nothing_to_undo = "没有可以撤销的习惯." - override val toast_nothing_to_redo = "没有可以恢复的习惯." - override val toast_habit_changed = "习惯已被修改." - override val toast_habit_changed_back = "修改已取消." - override val toast_habit_archived = "习惯存档成功." - override val toast_habit_unarchived = "存档已取消." - override val overview = "总览" - override val habit_strength = "习惯强度" - override val history = "历史" - override val clear = "取消" - override val description_hint = "提醒问题(你今天 xxx 了吗)" - override val repeat = "重复" - override val times_every = "次每" - override val days = "天" - override val reminder = "提醒" - override val discard = "放弃" - override val save = "保存" - override val streaks = "连续完成次数" - override val no_habits_found = "你还没有任何习惯" - override val long_press_to_toggle = "长按 标记/取消标记" - override val reminder_off = "关闭" - override val validation_name_should_not_be_blank = "习惯标题不能为空" - override val validation_number_should_be_positive = "数字必须大于零." - override val validation_at_most_one_rep_per_day = "每天最多重复一次" - override val create_habit = "新建习惯" - override val edit_habit = "编辑习惯" - override val check = "标记" - override val snooze = "以后再说" - override val intro_title_1 = "欢迎" - override val intro_description_1 = "循环习惯记录器帮助你建立和维持好习惯." - override val intro_title_2 = "建立一些新习惯" - override val intro_description_2 = "每当你完成一项习惯后,就在应用上做一个标记" - override val intro_title_3 = "保持习惯" - override val intro_description_3 = "当连续完成习惯达到一定时间时,你将可以点亮该习惯的成就之星" - override val intro_title_4 = "记录你的进步" - override val intro_description_4 = "详细图表展示长期以来习惯养成情况" - override val interval_15_minutes = "15分钟" - override val interval_30_minutes = "30分钟" - override val interval_1_hour = "1小时" - override val interval_2_hour = "2小时" - override val interval_4_hour = "4小时" - override val interval_8_hour = "8小时" - override val interval_24_hour = "24 小时" - override val pref_toggle_title = "轻触以启动重复" - override val pref_toggle_description = "更加方便,但有可能造成意外记录" - override val pref_snooze_interval_title = "提醒延迟间隔" - override val pref_rate_this_app = "去Play商店评价这个应用" - override val pref_send_feedback = "发送反馈给开发者" - override val pref_view_source_code = "在Github上查看源代码" - override val pref_view_app_introduction = "阅读应用介绍" - override val links = "链接" - override val behavior = "功能" - override val name = "习惯标题" - override val settings = "设置" - override val snooze_interval = "推迟提醒间隔" - override val hint_title = "你知道吗?" - override val hint_drag = "如果要重新排列习惯,按住习惯的名字拖到想要的位置" - override val hint_landscape = "转至横屏查看更多日期" - override val delete_habits = "删除该习惯" - override val delete_habits_message = "习惯会被永久删除,且该操作不可恢复" - override val habit_not_found = "习惯已删/找不到" - override val weekends = "周末" - override val any_weekday = "工作日" - override val any_day = "每天" - override val select_weekdays = "选择天数" - override val export_to_csv = "导出数据 (CSV)" - override val done_label = "完成" - override val clear_label = "取消" - override val select_hours = "选择小时" - override val select_minutes = "选择分钟" - override val about = "关于应用" - override val translators = "翻译者" - override val developers = "开发者" - override val version_n = "当前版本:%s" - override val frequency = "频率" - override val checkmark = "标记" - override val strength = "强度" - override val best_streaks = "最佳连续完成次数" - override val current_streaks = "当前连续完成次数" - override val number_of_repetitions = "重复次数" - override val last_x_days = "过去 %d 天" - override val last_x_weeks = "过去 %d 周" - override val last_x_months = "过去 %d 月" - override val last_x_years = "过去 %d 年" - override val all_time = "全部" - override val every_day = "每天" - override val every_week = "每周" - override val two_times_per_week = "每周两次" - override val five_times_per_week = "每周5次" - override val custom_frequency = "自定义" - override val help = "帮助 & 常见问题" - override val could_not_export = "导出数据失败" - override val could_not_import = "导入数据失败" - override val file_not_recognized = "无法识别文件" - override val habits_imported = "习惯导入成功" - override val full_backup_success = "习惯备份成功" - override val import_data = "导入数据" - override val export_full_backup = "导出完整备份" - override val import_data_summary = "支持此应用导出的备份文件, 也支持 Tickmate , HabitBull 或 Rewire 导出文件,请参阅常见问题以获取更多信息。" - override val export_as_csv_summary = "生成可以通过电子表格软件打开的文件,如 Microsoft Excel 或 OpenOffice Calc。该文件无法重新导入。" - override val export_full_backup_summary = "生成一个包含所有数据的文件。该文件可以重新导入。" - override val bug_report_failed = "错误报告生成失败" - override val generate_bug_report = "生成错误报告" - override val troubleshooting = "故障排除" - override val help_translate = "帮助翻译这个应用" - override val night_mode = "夜间模式" - override val use_pure_black = "在夜间模式中使用纯黑色" - override val pure_black_description = "以纯黑色背景代替夜间模式中的灰色背景。这将帮助减少 AMOLED 屏幕手机的电量使用。" - override val interface_preferences = "界面" - override val reverse_days = "反向顺序的日子" - override val reverse_days_description = "在主界面显示反向顺序的日子" - override val day = "天" - override val week = "周" - override val month = "月" - override val quarter = "季度" - override val year = "年" - override val total = "总数" - override val time_every = "次每" - override val every_x_days = "每 %d 天" - override val every_x_weeks = "每 %d 周" - override val every_x_months = "每 %d 月" - override val score = "成绩" - override val reminder_sound = "提醒声音" - override val none = "无" - override val filter = "筛选" - override val hide_completed = "隐藏已完成项目" - override val hide_archived = "隐藏已存档" - override val sticky_notifications = "使提醒持久" - override val sticky_notifications_description = "防止提醒被滑掉" - override val repair_database = "修复数据库" - override val database_repaired = "数据库已修复" - override val uncheck = "取消选中" - override val toggle = "切换" - override val action = "操作" - override val habit = "习惯" - override val sort = "排序" - override val manually = "手动" - override val by_name = "根据名称" - override val by_color = "根据颜色" - override val by_score = "根据分数" - override val download = "下载" - override val export = "导出" -} diff --git a/core/src/main/common/org/isoron/uhabits/i18n/StringsChineseTW.kt b/core/src/main/common/org/isoron/uhabits/i18n/StringsChineseTW.kt deleted file mode 100644 index d6a8ab28a..000000000 --- a/core/src/main/common/org/isoron/uhabits/i18n/StringsChineseTW.kt +++ /dev/null @@ -1,165 +0,0 @@ -// -------------------------------------------------------------------------- -// THIS FILE WAS AUTOMATICALLY GENERATED -// -// Please do not submit pull request to modify it. Corrections to translations -// may be submitted at https://translate.loophabits.org/ -// -------------------------------------------------------------------------- - -package org.isoron.uhabits.i18n - -class StringsChineseTW : Strings() { - override val app_name = "Loop 習以為常" - override val main_activity_title = "習慣" - override val action_settings = "偏好設定" - override val edit = "編輯" - override val delete = "刪除" - override val archive = "封存" - override val unarchive = "取消封存" - override val add_habit = "加入新習慣" - override val color_picker_default_title = "選擇顏色" - override val toast_habit_created = "習慣已增加" - override val toast_habit_deleted = "習慣已刪除" - override val toast_habit_restored = "習慣已恢復" - override val toast_nothing_to_undo = "沒有可以撤銷的習慣" - override val toast_nothing_to_redo = "沒有可以恢復的習慣" - override val toast_habit_changed = "習慣已經被修改" - override val toast_habit_changed_back = "修改已取消" - override val toast_habit_archived = "習慣已封存" - override val toast_habit_unarchived = "習慣已取消封存" - override val overview = "總覽" - override val habit_strength = "習慣強度" - override val history = "歴史紀錄" - override val clear = "清空" - override val description_hint = "問題(你今天…了嗎?)" - override val repeat = "重複" - override val times_every = "次每" - override val days = "日" - override val reminder = "提醒" - override val discard = "取消" - override val save = "保存" - override val streaks = "記錄" - override val no_habits_found = "你還沒有任何習慣" - override val long_press_to_toggle = "長按以標記/取消標記" - override val reminder_off = "關閉" - override val validation_name_should_not_be_blank = "習慣標題不能空白" - override val validation_number_should_be_positive = "數字必需大於零" - override val validation_at_most_one_rep_per_day = "每天最多重複一次" - override val create_habit = "添加習慣" - override val edit_habit = "編輯習慣" - override val check = "標記" - override val snooze = "稍後" - override val intro_title_1 = "歡迎" - override val intro_description_1 = "習以為常幫你創建並保持你的習慣。" - override val intro_title_2 = "建立一些習慣吧" - override val intro_description_2 = "每天,在完成你的習慣後,進入APP來打個勾吧。" - override val intro_title_3 = "堅持下去!" - override val intro_description_3 = "習以為常幫助你建立並維持好習慣" - override val intro_title_4 = "追蹤你的進步" - override val intro_description_4 = "詳細的圖表將顯示你的進步" - override val interval_15_minutes = "15分鐘" - override val interval_30_minutes = "30分鐘" - override val interval_1_hour = "1小時" - override val interval_2_hour = "2小時" - override val interval_4_hour = "4小時" - override val interval_8_hour = "8小時" - override val interval_24_hour = "24 小時" - override val pref_toggle_title = "短按來記錄習慣" - override val pref_toggle_description = "但有可能造成意外記錄" - override val pref_snooze_interval_title = "提醒延遲間隔" - override val pref_rate_this_app = "在Google Play上評價這個App" - override val pref_send_feedback = "發送改進意見給開發者" - override val pref_view_source_code = "在GitHub上查看原始碼" - override val pref_view_app_introduction = "App簡介" - override val links = "連結" - override val behavior = "功能" - override val name = "習慣標題" - override val settings = "設定" - override val snooze_interval = "延遲時間間隔" - override val hint_title = "你知道嗎?" - override val hint_drag = "如果要重新排列習慣,拖曳習慣到想要的位置" - override val hint_landscape = "把手機橫放可以看到更多天數" - override val delete_habits = "刪除" - override val delete_habits_message = "習慣會被永久刪除,而且該操作不可恢復" - override val habit_not_found = "習慣已刪除/找不到" - override val weekends = "周末" - override val any_weekday = "工作日" - override val any_day = "每天" - override val select_weekdays = "選擇天數" - override val export_to_csv = "匯出數據 (CSV)" - override val done_label = "完成" - override val clear_label = "取消" - override val select_hours = "選擇小時" - override val select_minutes = "選擇分鐘" - override val about = "關於本程式" - override val translators = "翻譯者" - override val developers = "開發者" - override val version_n = "%s 版" - override val frequency = "頻率" - override val checkmark = "標記" - override val strength = "強度" - override val best_streaks = "最長紀錄" - override val current_streaks = "目前紀錄" - override val number_of_repetitions = "重複次數" - override val last_x_days = "過去 %d 天" - override val last_x_weeks = "過去 %d 周" - override val last_x_months = "過去 %d 月" - override val last_x_years = "過去 %d 年" - override val all_time = "全部" - override val every_day = "每天" - override val every_week = "每週" - override val two_times_per_week = "每週兩次" - override val five_times_per_week = "每週五次" - override val custom_frequency = "自訂週期" - override val help = "幫助& 常見問題" - override val could_not_export = "輸出資料失敗" - override val could_not_import = "輸入資料失敗" - override val file_not_recognized = "無法辨識" - override val habits_imported = "習慣輸入成功" - override val full_backup_success = "習慣備份成功" - override val import_data = "匯入資料" - override val export_full_backup = "匯出完整備份" - override val import_data_summary = "支援此程式所匯出的資料, 也支援Tickmate,HabitBull 或 Rewire 所產生的文件。請參閱常見問題以獲得更多訊息。" - override val export_as_csv_summary = "生成可以利用表格程式打開的文件,如Microsoft Excel或OpenOffice Calc。此文件無法重新匯入。" - override val export_full_backup_summary = "生成一個包含所有資料的文件。該文件可以再重新匯入。" - override val bug_report_failed = "錯誤報告:生成失敗" - override val generate_bug_report = "產生錯誤報告" - override val troubleshooting = "問題排除" - override val help_translate = "協助翻譯本程式" - override val night_mode = "夜間模式" - override val use_pure_black = "在夜間模式中使用深色設定" - override val pure_black_description = "在夜間模式中,使用黑色背景取代灰色背景。這樣可以減少AMOLED螢幕的手機電量消耗。" - override val interface_preferences = "介面" - override val reverse_days = "反向排序日期" - override val reverse_days_description = "在主畫面上顯示反向排序的結果" - override val day = "日" - override val week = "周" - override val month = "月" - override val quarter = "季" - override val year = "年" - override val total = "總計" - override val time_every = "次每" - override val every_x_days = "每 %d 天" - override val every_x_weeks = "每 %d 周" - override val every_x_months = "每 %d 月" - override val score = "分數" - override val reminder_sound = "提醒音效" - override val none = "無" - override val filter = "篩選" - override val hide_completed = "隱藏已完成的習慣" - override val hide_archived = "隱藏已封存習慣" - override val sticky_notifications = "使提醒保持常駐" - override val sticky_notifications_description = "防止提醒被滑動移除" - override val repair_database = "修復資料庫" - override val database_repaired = "資料庫已修復" - override val uncheck = "取消選取" - override val toggle = "切換" - override val action = "操作" - override val habit = "習慣" - override val sort = "排序" - override val manually = "手動" - override val by_name = "根據名稱" - override val by_color = "根據顏色" - override val by_score = "根據分數" - override val download = "下載" - override val export = "匯出" -} diff --git a/core/src/main/common/org/isoron/uhabits/i18n/StringsCroatian.kt b/core/src/main/common/org/isoron/uhabits/i18n/StringsCroatian.kt deleted file mode 100644 index 8adf9da08..000000000 --- a/core/src/main/common/org/isoron/uhabits/i18n/StringsCroatian.kt +++ /dev/null @@ -1,165 +0,0 @@ -// -------------------------------------------------------------------------- -// THIS FILE WAS AUTOMATICALLY GENERATED -// -// Please do not submit pull request to modify it. Corrections to translations -// may be submitted at https://translate.loophabits.org/ -// -------------------------------------------------------------------------- - -package org.isoron.uhabits.i18n - -class StringsCroatian : Strings() { - override val app_name = "Loop Habit Tracker" - override val main_activity_title = "Navike" - override val action_settings = "Postavke" - override val edit = "Uredi" - override val delete = "Izbriši" - override val archive = "Arhiviraj" - override val unarchive = "Dearhiviraj" - override val add_habit = "Dodaj naviku" - override val color_picker_default_title = "Promijeni boju" - override val toast_habit_created = "Navika je stvorena" - override val toast_habit_deleted = "Navike su izbrisane" - override val toast_habit_restored = "Navike su obnovljene" - override val toast_nothing_to_undo = "Nema ništa za poništavanje" - override val toast_nothing_to_redo = "Nema ništa za obnavljanje" - override val toast_habit_changed = "Navika je promijenjena" - override val toast_habit_changed_back = "Navika je vraćena u početno stanje" - override val toast_habit_archived = "Navike su arhivirane" - override val toast_habit_unarchived = "Navike su dearhivirane" - override val overview = "Pregled" - override val habit_strength = "Snaga navike" - override val history = "Povijest" - override val clear = "Očisti" - override val description_hint = "Pitanje (Jesi li danas...?)" - override val repeat = "Ponovi" - override val times_every = "puta u" - override val days = "dani" - override val reminder = "Podsjetnik" - override val discard = "Odbaci" - override val save = "Spremi" - override val streaks = "Niz" - override val no_habits_found = "Nemate aktivnih navika" - override val long_press_to_toggle = "Pritisnite i držite za označavanje ili odznačavanje." - override val reminder_off = "Isključen" - override val validation_name_should_not_be_blank = "Naziv ne može biti prazan." - override val validation_number_should_be_positive = "Broj mora biti pozitivan." - override val validation_at_most_one_rep_per_day = "Možete imati najviše jedno ponavljanje po danu" - override val create_habit = "Stvori naviku" - override val edit_habit = "Uredi naviku" - override val check = "Potvrdi" - override val snooze = "Kasnije" - override val intro_title_1 = "Dobrodošli" - override val intro_description_1 = "Loop Habit Tracker vam pomaže stvoriti i održavati dobre navike." - override val intro_title_2 = "Stvorite neke nove navike" - override val intro_description_2 = "Svaki dan, nakon izvođenja vaše navike, postavite \"kvačicu\" u aplikaciji." - override val intro_title_3 = "Nastavite tako" - override val intro_description_3 = "Navikama koje konstantno izvodite kroz dugo vremena će te zaraditi punu zvjezdicu." - override val intro_title_4 = "Pratite svoj napredak" - override val intro_description_4 = "Detaljni grafovi vam prikazuju kako se vaše navike poboljšavaju kroz vrijeme." - override val interval_15_minutes = "15 minuta" - override val interval_30_minutes = "30 minuta" - override val interval_1_hour = "1 sat" - override val interval_2_hour = "2 sata" - override val interval_4_hour = "4 sata" - override val interval_8_hour = "8 sati" - override val interval_24_hour = "24 sata" - override val pref_toggle_title = "Označi ponavljanja sa kratkim pritisk." - override val pref_toggle_description = "Zgodnije je, no može uzrokovati slučajna označavanja." - override val pref_snooze_interval_title = "Interval odgađanja na podsjetnicima" - override val pref_rate_this_app = "Ocijeni ovu aplikaciju na Google Playu" - override val pref_send_feedback = "Pošalji povratne informacije raz. programeru" - override val pref_view_source_code = "Pogledaj izvorni kod na GitHubu" - override val pref_view_app_introduction = "Prikaži uvod u aplikaciju" - override val links = "Poveznice" - override val behavior = "Ponašanje" - override val name = "Naziv" - override val settings = "Postavke" - override val snooze_interval = "Interval odgađanja" - override val hint_title = "Jeste li znali?" - override val hint_drag = "Za razmještanje unosa, pritisnite i držite naziv navike, pa ih premjestite na točno mjesto." - override val hint_landscape = "Možete vidjeti više dana prebacivanjem uređaja u vodoravnu orijentaciju." - override val delete_habits = "Izbriši Navike" - override val delete_habits_message = "Navike će biti trajno izbrisane. Ova radnja se ne može poništiti." - override val habit_not_found = "Navika je izbrisana / nije pronađena" - override val weekends = "Vikendi" - override val any_weekday = "Ponedjeljak do Petak" - override val any_day = "Bilo koji dan u tjednu" - override val select_weekdays = "Odaberi dane" - override val export_to_csv = "Izvezi kao CSV" - override val done_label = "Dovršeno" - override val clear_label = "Očisti" - override val select_hours = "Odaberi sate" - override val select_minutes = "Odaberite minute" - override val about = "O aplikaciji" - override val translators = "Prevoditelji" - override val developers = "Razvojni programeri" - override val version_n = "Verzija %s" - override val frequency = "Učestalost" - override val checkmark = "Kvačica" - override val strength = "Snaga" - override val best_streaks = "Najbolji nizovi" - override val current_streaks = "Trenutni niz" - override val number_of_repetitions = "Broj ponavljanja" - override val last_x_days = "Zadnjih %d dana" - override val last_x_weeks = "Zadnjih %d tjedana" - override val last_x_months = "Zadnjih %d mjeseca" - override val last_x_years = "Zadnjih %d godina" - override val all_time = "Čitavo vrijeme" - override val every_day = "Svaki dan" - override val every_week = "Svaki tjedan" - override val two_times_per_week = "2 puta tjedno" - override val five_times_per_week = "5 puta tjedno" - override val custom_frequency = "Prilagođeno ..." - override val help = "Pomoć i pitanja" - override val could_not_export = "Izvoz podataka nije uspio." - override val could_not_import = "Uvoz podataka nije uspio." - override val file_not_recognized = "Datoteka nije prepoznata." - override val habits_imported = "Navike su uspješno uvezene." - override val full_backup_success = "Sigurnosna kopija je uspješno izvezena." - override val import_data = "Uvezi podatke" - override val export_full_backup = "Izvezi sigurnosnu kopiju" - override val import_data_summary = "Podržava sigurnosne kopije izvezene iz ove aplikacije, isto kao i datoteke generirane u Tickmate, HabitBull i Rewire. Pogledajte Pomoć i pitanja za više informacija." - override val export_as_csv_summary = "Generira datoteke koje se mogu otvarati programima za tablice kao što su Microsoft Excel ili OpenOffice Calc. Ova datoteka se ne može uvoziti." - override val export_full_backup_summary = "Generira datoteku koja sadrži sve vaše podatke. Ova datoteka se može uvoziti." - override val bug_report_failed = "Generiranje izvješća o pogrešci nije uspjelo." - override val generate_bug_report = "Generiraj izvješće o pogreški" - override val troubleshooting = "Rješavanje problema" - override val help_translate = "Pomozi prevesti ovu aplikaciju" - override val night_mode = "Noćni način" - override val use_pure_black = "Koristi crnu boju za noćni način" - override val pure_black_description = "Zamjenjuje sivu pozadinu sa crnom u noćnom načinu. To smanjuje potrošnju bateriju na uređajima s AMOLED zaslonima." - override val interface_preferences = "Sučelje" - override val reverse_days = "Obrnuti poredak dana" - override val reverse_days_description = "Prikažite dane obrnutim redom na glavnom zaslonu" - override val day = "Dan" - override val week = "Tjedan" - override val month = "Mjesec" - override val quarter = "Četvrtina" - override val year = "Godina" - override val total = "Ukupno" - override val time_every = "put svakih" - override val every_x_days = "Svaka %d dana" - override val every_x_weeks = "Svaka %d tjedna" - override val every_x_months = "Svaka %d mjeseca" - override val score = "Rezultat" - override val reminder_sound = "Zvuk podsjetnika" - override val none = "Nijedan" - override val filter = "Filtar" - override val hide_completed = "Sakrij završeno" - override val hide_archived = "Sakrij arhivirano" - override val sticky_notifications = "Učini obavijesti trajnima" - override val sticky_notifications_description = "Spriječava da se obavijesti zanemare." - override val repair_database = "Popravi bazu podataka" - override val database_repaired = "Baza podataka je popravljena." - override val uncheck = "Odznači" - override val toggle = "Uključi/isključi" - override val action = "Radnja" - override val habit = "Navika" - override val sort = "Sortiraj" - override val manually = "Ručno" - override val by_name = "Po nazivu" - override val by_color = "Po boji" - override val by_score = "Po rezultatu" - override val download = "Preuzmi" - override val export = "Izvezi" -} diff --git a/core/src/main/common/org/isoron/uhabits/i18n/StringsCzech.kt b/core/src/main/common/org/isoron/uhabits/i18n/StringsCzech.kt deleted file mode 100644 index 0744546c0..000000000 --- a/core/src/main/common/org/isoron/uhabits/i18n/StringsCzech.kt +++ /dev/null @@ -1,165 +0,0 @@ -// -------------------------------------------------------------------------- -// THIS FILE WAS AUTOMATICALLY GENERATED -// -// Please do not submit pull request to modify it. Corrections to translations -// may be submitted at https://translate.loophabits.org/ -// -------------------------------------------------------------------------- - -package org.isoron.uhabits.i18n - -class StringsCzech : Strings() { - override val app_name = "Loop Habit Tracker" - override val main_activity_title = "Zvyky" - override val action_settings = "Nastavení" - override val edit = "Upravit" - override val delete = "Smazat" - override val archive = "Archivovat" - override val unarchive = "Obnovit" - override val add_habit = "Přidat zvyk" - override val color_picker_default_title = "Změnit barvu" - override val toast_habit_created = "Zvyk vytvořen." - override val toast_habit_deleted = "Zvyky smazány." - override val toast_habit_restored = "Zvyky obnoveny." - override val toast_nothing_to_undo = "Nelze jít zpět." - override val toast_nothing_to_redo = "Nelze jít vpřed." - override val toast_habit_changed = "Zvyk změněn." - override val toast_habit_changed_back = "Zvyk změněn zpět." - override val toast_habit_archived = "Archivováno." - override val toast_habit_unarchived = "Zvyky obnoveny." - override val overview = "Přehled" - override val habit_strength = "Síla zvyku" - override val history = "Historie" - override val clear = "Smazat" - override val description_hint = "Otázka (Dělal jsi dnes...?)" - override val repeat = "Opakovat" - override val times_every = "krát za" - override val days = "dní" - override val reminder = "Připomenutí" - override val discard = "Zrušit" - override val save = "Uložit" - override val streaks = "Serie" - override val no_habits_found = "Nemáte žádné nedokončené zvyky" - override val long_press_to_toggle = "Stiskni a drž pro označení" - override val reminder_off = "Vyp." - override val validation_name_should_not_be_blank = "Jméno musíte vyplnit." - override val validation_number_should_be_positive = "Číslo musí být kladné." - override val validation_at_most_one_rep_per_day = "Můžete mít maximálně jedno označení denně." - override val create_habit = "Vytvořit zvyk" - override val edit_habit = "Upravit zvyk" - override val check = "Hotovo" - override val snooze = "Odložit" - override val intro_title_1 = "Vítejte" - override val intro_description_1 = "Sledování zvyků ti pomůže vytvořit a dosáhnout dobrých návyků." - override val intro_title_2 = "Vytvoř si nové zvyky" - override val intro_description_2 = "Každý den po splnění zvyku, si ho v aplikaci zaškrtni." - override val intro_title_3 = "Jen tak dál" - override val intro_description_3 = "Zvyky, které vykonáváš pravidelně delší dobu, se označí hvězdou." - override val intro_title_4 = "Sleduj svůj postup" - override val intro_description_4 = "Detailní grafy ti ukážou, jak se tvé zvyky v průběhu času zlepšily." - override val interval_15_minutes = "15 minut" - override val interval_30_minutes = "30 minut" - override val interval_1_hour = "Hodina" - override val interval_2_hour = "2 hodiny" - override val interval_4_hour = "4 hodiny" - override val interval_8_hour = "8 hodin" - override val interval_24_hour = "24 hodin" - override val pref_toggle_title = "Označte opakování krátkým stisknutím" - override val pref_toggle_description = "Praktičtější, ale může způsobit nechtěné označení." - override val pref_snooze_interval_title = "Doba odložení upomínky" - override val pref_rate_this_app = "Ohodnoťte nás v Google Play" - override val pref_send_feedback = "Zpětná vazba vývojáři" - override val pref_view_source_code = "Zobrazit zdroj. kód na GitHub" - override val pref_view_app_introduction = "Představení aplikace" - override val links = "Odkazy" - override val behavior = "Chování" - override val name = "Jméno" - override val settings = "Nastavení" - override val snooze_interval = "Interval odkladu" - override val hint_title = "Věděli jste?" - override val hint_drag = "Přeřazení záznamů proveď stisknutím a podržením názvu zvyku a poté přesunutím na správné místo." - override val hint_landscape = "Můžeš vidět více dnů otočením telefonu na šířku." - override val delete_habits = "Smazat zvyky" - override val delete_habits_message = "Označené zvyky budou navždy odstraněny. Toto nelze vzít zpět." - override val habit_not_found = "Zvyk smazán / nenalezen" - override val weekends = "Víkendy" - override val any_weekday = "Pondělí až pátek" - override val any_day = "Jakýkoliv den v týdnu" - override val select_weekdays = "Vyber dny" - override val export_to_csv = "Exportovat CSV" - override val done_label = "Hotovo" - override val clear_label = "Smazat" - override val select_hours = "Vyber hodiny" - override val select_minutes = "Vyber minuty" - override val about = "O nás" - override val translators = "Překladatelé" - override val developers = "Vývojáři" - override val version_n = "Verze %s" - override val frequency = "Frekvence" - override val checkmark = "Zatržítko" - override val strength = "Síla" - override val best_streaks = "Nejlepší serie" - override val current_streaks = "Aktuální serie" - override val number_of_repetitions = "Počet opakování" - override val last_x_days = "Posledních %d dnů" - override val last_x_weeks = "Posledních %d týdnů" - override val last_x_months = "Posledních %d měsíců" - override val last_x_years = "Posledních %d roků" - override val all_time = "Bez omezení" - override val every_day = "Každý den" - override val every_week = "Každý týden" - override val two_times_per_week = "2 krát týdně" - override val five_times_per_week = "5 krát týdně" - override val custom_frequency = "Vlastní..." - override val help = "Pomoc a FAQ" - override val could_not_export = "Export selhal." - override val could_not_import = "Import selhal." - override val file_not_recognized = "Soubor netozpoznán." - override val habits_imported = "Zvyky úspěšně importovány." - override val full_backup_success = "Kompletní záloha úspěšně exportována." - override val import_data = "Importovat" - override val export_full_backup = "Kompletní export" - override val import_data_summary = "Podpora exportů z této aplikace, ale také souborů vygenerovaných aplikacemi od Tickmate, HabitBull nebo Rewire. Pro více info si prečti FAQ." - override val export_as_csv_summary = "Generuje soubory, které můžeš otevřít v tabulkových editorech, jako jsou Microsoft Excel nebo OpenOffice Calc. Tyto soubory nelze importovat zpět." - override val export_full_backup_summary = "Generuje soubor, který obsahuje všechna tvoje data. Tento soubor můžeš importovat zpět." - override val bug_report_failed = "Generace výpisu chyb selhala." - override val generate_bug_report = "Generovat výpis chyb" - override val troubleshooting = "Řešení problémů" - override val help_translate = "Pomozte s překladem aplikace" - override val night_mode = "Noční téma" - override val use_pure_black = "Zobrazit čistě černou v nočním tématu" - override val pure_black_description = "Nahradí šedé pozadí čistou černou v nočním tématu. Snižuje spotřebu baterie v telefonech s AMOLED displejem." - override val interface_preferences = "Rozhraní" - override val reverse_days = "Otočit pořadí dnů" - override val reverse_days_description = "Zobrazí dny na úvodní stránce v obráceném pořadí" - override val day = "Den" - override val week = "Týden" - override val month = "Měsíc" - override val quarter = "Čtvrtletí" - override val year = "Rok" - override val total = "Celkem" - override val time_every = "krát za" - override val every_x_days = "Každých %d dní" - override val every_x_weeks = "Každých %d týdnů" - override val every_x_months = "Každých %d měsíců" - override val score = "Skóre" - override val reminder_sound = "Zvuk upomínky" - override val none = "Žádný" - override val filter = "Filtr" - override val hide_completed = "Skrýt dokončené" - override val hide_archived = "Skrýt archivované" - override val sticky_notifications = "Připnout notifikaci" - override val sticky_notifications_description = "Zabraňuje notifikaci její odstranění odsunutím." - override val repair_database = "Opravit databázi" - override val database_repaired = "Databáze opravena." - override val uncheck = "Odznačit" - override val toggle = "Přepnout" - override val action = "Akce" - override val habit = "Zvyk" - override val sort = "Řadit" - override val manually = "Ručně" - override val by_name = "Abecedně" - override val by_color = "Podle barvy" - override val by_score = "Podle skóre" - override val download = "Stáhnout" - override val export = "Export" -} diff --git a/core/src/main/common/org/isoron/uhabits/i18n/StringsDanish.kt b/core/src/main/common/org/isoron/uhabits/i18n/StringsDanish.kt deleted file mode 100644 index 1a8f72d60..000000000 --- a/core/src/main/common/org/isoron/uhabits/i18n/StringsDanish.kt +++ /dev/null @@ -1,141 +0,0 @@ -// -------------------------------------------------------------------------- -// THIS FILE WAS AUTOMATICALLY GENERATED -// -// Please do not submit pull request to modify it. Corrections to translations -// may be submitted at https://translate.loophabits.org/ -// -------------------------------------------------------------------------- - -package org.isoron.uhabits.i18n - -class StringsDanish : Strings() { - override val app_name = "Loop Vane Tracker" - override val main_activity_title = "Vaner" - override val action_settings = "Indstillinger" - override val edit = "Rediger" - override val delete = "Slet" - override val archive = "Arkiver" - override val unarchive = "Fjern fra arkiv" - override val add_habit = "Tilføj vane" - override val color_picker_default_title = "Skift farve" - override val toast_habit_created = "Vanen er skabt." - override val toast_habit_deleted = "Vanen er slettet." - override val toast_habit_restored = "Vanen er genskabt." - override val toast_nothing_to_undo = "Intet at fortryde." - override val toast_nothing_to_redo = "Intet at gengøre." - override val toast_habit_changed = "Vanen er ændret" - override val toast_habit_changed_back = "Vanen er ændret tilbage." - override val toast_habit_archived = "Vanerne er arkiveret." - override val toast_habit_unarchived = "Vanerne er fjernet fra arkivet." - override val overview = "Overblik" - override val habit_strength = "Vanestyrke" - override val history = "Historie" - override val clear = "Rens" - override val description_hint = "Spørgsmål (Fik du … i dag)" - override val repeat = "Gentag" - override val times_every = "gange på" - override val days = "dage" - override val reminder = "Påmindelse" - override val discard = "Forkast" - override val save = "Gem" - override val streaks = "i træk" - override val no_habits_found = "Du har ingen aktive vaner" - override val long_press_to_toggle = "Tryk og hold nede for at afkrydse" - override val reminder_off = "Slukket" - override val validation_name_should_not_be_blank = "Navn skal udfyldes." - override val validation_number_should_be_positive = "Tallet skal være positivt." - override val validation_at_most_one_rep_per_day = "Du kan højst have én gentagelse per dag" - override val create_habit = "Skab en vane" - override val edit_habit = "Rediger vane" - override val check = "Tjek" - override val snooze = "Senere" - override val intro_title_1 = "Velkommen" - override val intro_description_1 = "Loop Habit Tracker hjælper dig med at holde gode vaner." - override val intro_title_2 = "Skab nogle nye vaner" - override val intro_description_2 = "Hver dag, efter at have udført din vane, skal du sætte et flueben i app\'en." - override val intro_title_3 = "Fortsæt" - override val intro_description_3 = "Vaner fulgt regelmæssigt gennem langtid modtager en stjerne." - override val intro_title_4 = "Følg dine fremskridt" - override val intro_description_4 = "Detaljerede grafer viser dig hvordan dine vaner udvikler sig over tid." - override val interval_15_minutes = "15 minutter" - override val interval_30_minutes = "30 minutter" - override val interval_1_hour = "1 time" - override val interval_2_hour = "2 timer" - override val interval_4_hour = "4 timer" - override val interval_8_hour = "8 timer" - override val pref_toggle_title = "Vælg gentagelser med kort tryk" - override val pref_toggle_description = "Mere bekvemmeligt, men kan forårsage uhensigtede tryk." - override val pref_snooze_interval_title = "Snooze interval på påmindelserne" - override val pref_rate_this_app = "Bedøm denne app på Google Play" - override val pref_send_feedback = "Send feedback til udvikleren" - override val pref_view_source_code = "Se kildekoden på GitHub" - override val pref_view_app_introduction = "Se app introduktion" - override val links = "Henvisninger" - override val behavior = "Opførelse" - override val name = "Navn" - override val settings = "Indstillinger" - override val hint_title = "Vidste du?" - override val hint_drag = "For at omarrangere poster, tryk og hold på navnet på den vane, og træk den til det korrekte sted." - override val hint_landscape = "Du kan se flere dage ved at sætte telefonen i liggende tilstand." - override val delete_habits = "Slet vaner" - override val delete_habits_message = "Vanerne vil blive slettet permanent. Denne handling kan ikke fortrydes." - override val weekends = "Weekender" - override val any_weekday = "Mandag til Fredag" - override val any_day = "En hvilken som helst dag i ugen" - override val select_weekdays = "Vælg dage" - override val export_to_csv = "Eksporter som CSV" - override val done_label = "Færdig" - override val clear_label = "Fjern" - override val select_hours = "Vælg timer" - override val select_minutes = "Vælg minutter" - override val about = "Om" - override val translators = "Oversættere" - override val developers = "Udviklere" - override val frequency = "Hyppighed" - override val checkmark = "Afkrydsning" - override val strength = "Styrke" - override val best_streaks = "Bedste striber" - override val current_streaks = "Aktuel stribe" - override val number_of_repetitions = "Antal gentagelser" - override val last_x_days = "Sidste % dage" - override val last_x_weeks = "Sidste %d uger" - override val last_x_months = "Sidste %d måneder" - override val last_x_years = "Sidste %d år" - override val every_day = "Hver dag" - override val every_week = "Hver uge" - override val two_times_per_week = "2 gange om ugen" - override val five_times_per_week = "5 gange om ugen" - override val custom_frequency = "Brugerdefinerede" - override val help = "Hjælp & FAQ" - override val could_not_export = "Kunne ikke eksportere data" - override val could_not_import = "Kunne ikke importere data" - override val file_not_recognized = "Fil ikke genkendt." - override val habits_imported = "Vaner importeret." - override val full_backup_success = "Fuld backup eksporteret." - override val import_data = "Importer data" - override val export_full_backup = "Eksporter fuld backup." - override val import_data_summary = "Understøtter fuld backup eksporteret af denne app, samt filer genereret af Tickmate, HabitBull eller Rewire. Se FAQ for mere information." - override val export_as_csv_summary = "Opretter filer, der kan åbnes af regneark fra Microsoft Excel eller OpenOffice Calc. Denne fil kan ikke importeres tilbage." - override val export_full_backup_summary = "Opretter en fil, der indeholder alle dine data. Denne fil kan importeres tilbage." - override val bug_report_failed = "Kunne ikke generere fejlrapport." - override val generate_bug_report = "Generer fejlrapport" - override val troubleshooting = "Fejlfinding" - override val help_translate = "Hjælpe med at oversætte denne app" - override val night_mode = "Nat-tilstand" - override val use_pure_black = "Brug ren sort i nat-tilstand" - override val pure_black_description = "Erstatter grå baggrunde med ren sort i nat-tilstand. Reducerer batteriforbruget i telefoner med AMOLED skærm." - override val interface_preferences = "Grænseflade" - override val reverse_days = "Omvendt rækkefølge af dage" - override val reverse_days_description = "Vis dag i omvendt rækkefølge på hovedskærmen" - override val day = "Dag" - override val week = "Uge" - override val month = "Måned" - override val quarter = "Kvartal" - override val year = "År" - override val time_every = "Tid til" - override val every_x_days = "Hver %d dage" - override val every_x_weeks = "Hver %d uger" - override val every_x_months = "Hver %d måneder" - override val score = "Point" - override val reminder_sound = "Påmindelse lyd" - override val none = "Ingen" -} diff --git a/core/src/main/common/org/isoron/uhabits/i18n/StringsDutch.kt b/core/src/main/common/org/isoron/uhabits/i18n/StringsDutch.kt deleted file mode 100644 index 6ae6d393f..000000000 --- a/core/src/main/common/org/isoron/uhabits/i18n/StringsDutch.kt +++ /dev/null @@ -1,165 +0,0 @@ -// -------------------------------------------------------------------------- -// THIS FILE WAS AUTOMATICALLY GENERATED -// -// Please do not submit pull request to modify it. Corrections to translations -// may be submitted at https://translate.loophabits.org/ -// -------------------------------------------------------------------------- - -package org.isoron.uhabits.i18n - -class StringsDutch : Strings() { - override val app_name = "Loop Gewoonte tracker" - override val main_activity_title = "Gewoontes" - override val action_settings = "Instellingen" - override val edit = "Wijzig" - override val delete = "Verwijder" - override val archive = "Archiveer" - override val unarchive = "Dearchiveren" - override val add_habit = "Nieuwe gewoonte" - override val color_picker_default_title = "Verander kleur" - override val toast_habit_created = "Gewoonte aangemaakt." - override val toast_habit_deleted = "Gewoontes verwijderd" - override val toast_habit_restored = "Gewoontes hersteld" - override val toast_nothing_to_undo = "Niets om ongedaan te maken." - override val toast_nothing_to_redo = "Niets om over te doen." - override val toast_habit_changed = "Gewoonte gewijzigd." - override val toast_habit_changed_back = "Wijziging gewoonte ongedaan gemaakt." - override val toast_habit_archived = "Gewoontes gearchiveerd" - override val toast_habit_unarchived = "Gewoontes hersteld uit archief" - override val overview = "Overzicht" - override val habit_strength = "Gewoonte-sterkte" - override val history = "Geschiedenis" - override val clear = "Wis" - override val description_hint = "Vraag (Heb je vandaag .... ?)" - override val repeat = "Herhaal" - override val times_every = "keer in " - override val days = "dagen" - override val reminder = "Herinnering" - override val discard = "Verwijder" - override val save = "Opslaan" - override val streaks = "Reeksen" - override val no_habits_found = "Je hebt geen actieve gewoontes" - override val long_press_to_toggle = "Houdt ingedrukt om te selecteren of deselecteren" - override val reminder_off = "Uit" - override val validation_name_should_not_be_blank = "Naam kan niet leeg zijn." - override val validation_number_should_be_positive = "Nummer moet positief zijn." - override val validation_at_most_one_rep_per_day = "Je kunt maximaal een repetitie per dag hebben" - override val create_habit = "Maak gewoonte aan" - override val edit_habit = "Wijzig gewoonte" - override val check = "Voltooid" - override val snooze = "Later" - override val intro_title_1 = "Welkom" - override val intro_description_1 = "Loop Habit Tracker helpt je om goede gewoontes te creëren en te onderhouden." - override val intro_title_2 = "Creëer enkele nieuwe gewoontes" - override val intro_description_2 = "Plaats iedere dag, na het uitvoeren van jouw gewoonte, een vinkje in de app." - override val intro_title_3 = "Blijf het doen" - override val intro_description_3 = "Gewoontes die een langere tijd consistent worden uitgevoerd, zullen een volle ster verdienen." - override val intro_title_4 = "Volg jouw voortgang" - override val intro_description_4 = "Gedetailleerde grafieken tonen je hoe jouw gewoontes met de tijd verbeteren." - override val interval_15_minutes = "15 minuten" - override val interval_30_minutes = "30 minuten" - override val interval_1_hour = "1 uur" - override val interval_2_hour = "2 uur" - override val interval_4_hour = "4 uur" - override val interval_8_hour = "8 uur" - override val interval_24_hour = "24 uur" - override val pref_toggle_title = "Wijzig herhalingen door kort indrukken" - override val pref_toggle_description = "Zet vinkjes met een enkel tikje in plaats van ingedrukt houden. Handiger, maar kan onbedoelde wijzigingen veroorzaken." - override val pref_snooze_interval_title = "Snooze interval voor herinneringen" - override val pref_rate_this_app = "Beoordeel deze app in Google Play" - override val pref_send_feedback = "Stuur feedback aan de ontwikkelaar" - override val pref_view_source_code = "Bekijk de broncode op GitHub" - override val pref_view_app_introduction = "Bekijk de app introductie" - override val links = "Links" - override val behavior = "Gedrag" - override val name = "Naam" - override val settings = "Instellingen" - override val snooze_interval = "Snooze interval" - override val hint_title = "Wist je dat?" - override val hint_drag = "Om de rijen te ordenen, houdt de gewoonte ingedrukt en sleep het naar de gewenste plek." - override val hint_landscape = "Je kunt meer dagen zien door de telefoon in horizontale modus te zetten." - override val delete_habits = "Verwijder gewoontes" - override val delete_habits_message = "De gewoontes zullen permanent verwijderd worden. Deze actie kan niet ongedaan gemaakt worden." - override val habit_not_found = "Gewoonte verwijderd / niet gevonden" - override val weekends = "Weekends" - override val any_weekday = "Maandag tot vrijdag" - override val any_day = "Elke dag van de week" - override val select_weekdays = "Selecteer dagen" - override val export_to_csv = "Exporteer als CSV" - override val done_label = "Voltooid" - override val clear_label = "Wis" - override val select_hours = "Selecteer uren" - override val select_minutes = "Selecteer minuten" - override val about = "Over" - override val translators = "Vertalers" - override val developers = "Ontwikkelaars" - override val version_n = "Versie %s" - override val frequency = "Frequentie" - override val checkmark = "Vinkje" - override val strength = "Kracht" - override val best_streaks = "Beste reeksen" - override val current_streaks = "Huidige reeks" - override val number_of_repetitions = "Aantal herhalingen" - override val last_x_days = "Laatste %d dagen" - override val last_x_weeks = "Laatste %d weken" - override val last_x_months = "Laatste %d maanden" - override val last_x_years = "Laatste %d jaren" - override val all_time = "Altijd" - override val every_day = "Iedere dag" - override val every_week = "Iedere week" - override val two_times_per_week = "2 keer per week" - override val five_times_per_week = "5 keer per week" - override val custom_frequency = "Aangepast …" - override val help = "Hulp en veelgestelde vragen" - override val could_not_export = "Het exporteren van de data is mislukt." - override val could_not_import = "Importeren van data mislukt." - override val file_not_recognized = "Bestand niet herkend." - override val habits_imported = "Gewoontes succesvol geïmporteerd." - override val full_backup_success = "Volledige backup succesvol geëxporteerd." - override val import_data = "Importeer gegevens" - override val export_full_backup = "Exporteer volledige backup" - override val import_data_summary = "Ondersteund volledige backups geexporteerd door deze app. Ondersteund ook bestanden gegenereerd door Tickmate, HabitBull of Rewire. Zie FAQ voor meer informatie" - override val export_as_csv_summary = "Genereert bestanden die geopend kunnen worden door spreadsheet software zoals Microsoft Excel or OpenOffice Calc. Dit bestand kan niet terug geïmporteerd worden." - override val export_full_backup_summary = "Genereert een bestand met al uw gegevens. Dit bestand kan ook terug geïmporteerd worden." - override val bug_report_failed = "Het genereren van het foutenrapport is mislukt." - override val generate_bug_report = "Genereer foutenrapport" - override val troubleshooting = "Probleemoplossing" - override val help_translate = "Help deze app te vertalen" - override val night_mode = "Nachtmodus" - override val use_pure_black = "Gebruik puur zwart in nachtmodus" - override val pure_black_description = "Vervangt grijze achtergronden door puur zwart in nachtmodus. Vermindert batterijgebruik in telefoons met AMOLED scherm." - override val interface_preferences = "Interface" - override val reverse_days = "Omgekeerde volgorde van dagen" - override val reverse_days_description = "Toon dagen in omgekeerde volgorde op het hoofdscherm" - override val day = "Dag" - override val week = "Week" - override val month = "Maand" - override val quarter = "Kwartaal" - override val year = "Jaar" - override val total = "Totaal" - override val time_every = "keer per" - override val every_x_days = "Iedere %d dagen" - override val every_x_weeks = "Iedere %d weken" - override val every_x_months = "Iedere %d maanden" - override val score = "Score" - override val reminder_sound = "Herinneringsgeluid" - override val none = "Stil" - override val filter = "Filteren" - override val hide_completed = "Verberg voltooide" - override val hide_archived = "Verberg gearchiveerde" - override val sticky_notifications = "Maak meldingen persistent" - override val sticky_notifications_description = "Voorkom dat meldingen weggehaald kunnen worden." - override val repair_database = "Database repareren" - override val database_repaired = "Database gerepareerd." - override val uncheck = "Deselecteren" - override val toggle = "Omkeren" - override val action = "Actie" - override val habit = "Gewoonte" - override val sort = "Sorteren" - override val manually = "Handmatig" - override val by_name = "Bij naam" - override val by_color = "Bij kleur" - override val by_score = "Bij score" - override val download = "Downloaden" - override val export = "Exporteren" -} diff --git a/core/src/main/common/org/isoron/uhabits/i18n/StringsEsperanto.kt b/core/src/main/common/org/isoron/uhabits/i18n/StringsEsperanto.kt deleted file mode 100644 index e491cc365..000000000 --- a/core/src/main/common/org/isoron/uhabits/i18n/StringsEsperanto.kt +++ /dev/null @@ -1,165 +0,0 @@ -// -------------------------------------------------------------------------- -// THIS FILE WAS AUTOMATICALLY GENERATED -// -// Please do not submit pull request to modify it. Corrections to translations -// may be submitted at https://translate.loophabits.org/ -// -------------------------------------------------------------------------- - -package org.isoron.uhabits.i18n - -class StringsEsperanto : Strings() { - override val app_name = "Loop Vaneoversikt" - override val main_activity_title = "Vaner" - override val action_settings = "Innstillinger" - override val edit = "Redigér" - override val delete = "Slett" - override val archive = "Arkivér" - override val unarchive = "Uarkivér" - override val add_habit = "Legg til vane" - override val color_picker_default_title = "Endr farge" - override val toast_habit_created = "Vane laget" - override val toast_habit_deleted = "Vaner slettet" - override val toast_habit_restored = "Vaner gjenopprettet" - override val toast_nothing_to_undo = "Ingenting å angre" - override val toast_nothing_to_redo = "Ingenting å ta tilbake" - override val toast_habit_changed = "Vane endret" - override val toast_habit_changed_back = "Vane tilbakeendret" - override val toast_habit_archived = "Vaner arkivert" - override val toast_habit_unarchived = "Vaner uarkivert" - override val overview = "Oversikt" - override val habit_strength = "Vanestyrke" - override val history = "Logg" - override val clear = "Fjern" - override val description_hint = "Spørsmål (Gjorde du … i dag?)" - override val repeat = "Gjenta" - override val times_every = "ganger på" - override val days = "dager" - override val reminder = "Påminnelse" - override val discard = "Forkast" - override val save = "Lagr" - override val streaks = "Gjentakelser" - override val no_habits_found = "Du har ingen aktive vaner" - override val long_press_to_toggle = "Trykk og hold for å sjekke eller usjekke" - override val reminder_off = "Av" - override val validation_name_should_not_be_blank = "Navnet kan ikke stå tomt." - override val validation_number_should_be_positive = "Nummeret må være positivt." - override val validation_at_most_one_rep_per_day = "Du kan maks ha én repetisjon om dagen" - override val create_habit = "Lag vane" - override val edit_habit = "Redigér vane" - override val check = "Sjekk" - override val snooze = "Senere" - override val intro_title_1 = "Velkommen" - override val intro_description_1 = "Loop Vaneoversikt hjelper deg med å lage og beholde gode vaner." - override val intro_title_2 = "Lag noen nye vaner" - override val intro_description_2 = "Hver dag, etter du utfører vanen din, sett en hake på appen." - override val intro_title_3 = "Fortsett med å gjøre det" - override val intro_description_3 = "Vaner utført konsekvent over lang tid vil få en hel stjerne." - override val intro_title_4 = "Hold oversikt over fremgangen din" - override val intro_description_4 = "Detaljerte grafer viser deg hvordan vanene dine forbedrer seg over tid." - override val interval_15_minutes = "15 minutter" - override val interval_30_minutes = "30 minutter" - override val interval_1_hour = "1 time" - override val interval_2_hour = "2 timer" - override val interval_4_hour = "4 timer" - override val interval_8_hour = "8 timer" - override val interval_24_hour = "1 døgn" - override val pref_toggle_title = "Veksl med enkelttrykk" - override val pref_toggle_description = "Sett på haker med et enkelttrykk i stedet for å tykke og holde. Mer praktisk, men kan forårsake utilsiktede vekslinger." - override val pref_snooze_interval_title = "Slumreintervall på påminnelser" - override val pref_rate_this_app = "Vurdér denne appen på Google Play" - override val pref_send_feedback = "Send tilbakemelding til utviklerne" - override val pref_view_source_code = "Vis kildekode på GitHub" - override val pref_view_app_introduction = "Se på appintroduksjon" - override val links = "Lenker" - override val behavior = "Oppførsel" - override val name = "Navn" - override val settings = "Innstillinger" - override val snooze_interval = "Slumreintervall" - override val hint_title = "Visste du at?" - override val hint_drag = "For å sortere innleggene, trykk og hold på navnet til vanen, deretter dra den til det korrekte stedet." - override val hint_landscape = "Du kan se flere dager ved å sette telefonen din i landskapsmodus." - override val delete_habits = "Slett vaner" - override val delete_habits_message = "Vanene vil bli slettet permanent. Denne handlingen kan ikke angres." - override val habit_not_found = "Vane slettet / ikke funnet" - override val weekends = "Helger" - override val any_weekday = "Hverdager" - override val any_day = "Hvilken som helst dag i uken" - override val select_weekdays = "Velg dager" - override val export_to_csv = "Eksportér som CSV" - override val done_label = "Ferdig" - override val clear_label = "Fjern" - override val select_hours = "Velg timer" - override val select_minutes = "Velg minutter" - override val about = "Om" - override val translators = "Translatører" - override val developers = "Utviklere" - override val version_n = "Versjon %s" - override val frequency = "Hyppighet" - override val checkmark = "Hake" - override val strength = "Styrke" - override val best_streaks = "Beste gjentakelser" - override val current_streaks = "Nåværende gjentakelse" - override val number_of_repetitions = "Repetisjonsantall" - override val last_x_days = "Siste %d dager" - override val last_x_weeks = "Siste %d uker" - override val last_x_months = "Siste %d måneder" - override val last_x_years = "Siste %d år" - override val all_time = "Alltid" - override val every_day = "Hver dag" - override val every_week = "Hver uke" - override val two_times_per_week = "2 ganger i uken" - override val five_times_per_week = "5 ganger i uken" - override val custom_frequency = "Tilpasset …" - override val help = "Hjelp og FAQ" - override val could_not_export = "Mislyktes i å eksportere data." - override val could_not_import = "Mislyktes i å importere data." - override val file_not_recognized = "Fil ikke gjenkjent." - override val habits_imported = "Vaner suksessfullt importert." - override val full_backup_success = "Hel sikkerhetskopi suksessfullt eksportert." - override val import_data = "Importér data" - override val export_full_backup = "Eksportér hel sikkerhetskopi" - override val import_data_summary = "Støtter hele sikkerhetskopier eksportert av denne appen, i tillegg til filer generert av Tickmate, HabitBull, og Rewire. Sjekk ut FAQ for mer informasjon." - override val export_as_csv_summary = "Genererer filer som kan bli åpnet av regnearkprogrammer som Microsoft Excel og OpenOffice Calc. Disse filene kan ikke importeres tilbake." - override val export_full_backup_summary = "Genererer en fil som inneholder all dataen din. Denne filen kan ikke importeres tilbake." - override val bug_report_failed = "Mislyktes i å generere feilrapport." - override val generate_bug_report = "Generér feilrapport" - override val troubleshooting = "Feilsøkning" - override val help_translate = "Hjelp med å oversette denne appen" - override val night_mode = "Nattmodus" - override val use_pure_black = "Bruk batterisparing i nattmodus" - override val pure_black_description = "Bytter ut grå bakgunner med helt svarte i nattmodus. Reduserer betteribruk hos telefoner med AMOLED-skjerm." - override val interface_preferences = "Grensesnitt" - override val reverse_days = "Omvendt dagsrekkefølge" - override val reverse_days_description = "Vis dager i omvendt rekkefølge på hovedmenyen" - override val day = "Dag" - override val week = "Uke" - override val month = "Måned" - override val quarter = "Kvarter" - override val year = "År" - override val total = "Totalt" - override val time_every = "gang på" - override val every_x_days = "Hver %d. dag" - override val every_x_weeks = "Hver %d. uke" - override val every_x_months = "Hver %d. måned" - override val score = "Poengsum" - override val reminder_sound = "Påminnelseslyd" - override val none = "Ingen" - override val filter = "Filtrér" - override val hide_completed = "Gjem fullførte" - override val hide_archived = "Gjem arkiverte" - override val sticky_notifications = "Gjør varslinger klebrige" - override val sticky_notifications_description = "Forhindrer varslinger fra å bli sveipet vekk." - override val repair_database = "Reparér database" - override val database_repaired = "Database reparert." - override val uncheck = "Usjekk" - override val toggle = "Veksl" - override val action = "Handling" - override val habit = "Vane" - override val sort = "Sortér" - override val manually = "Manuelt" - override val by_name = "Etter navn" - override val by_color = "Etter farge" - override val by_score = "Etter poengsum" - override val download = "Last ned" - override val export = "Eksportér" -} diff --git a/core/src/main/common/org/isoron/uhabits/i18n/StringsFinnish.kt b/core/src/main/common/org/isoron/uhabits/i18n/StringsFinnish.kt deleted file mode 100644 index a2ccb5ddf..000000000 --- a/core/src/main/common/org/isoron/uhabits/i18n/StringsFinnish.kt +++ /dev/null @@ -1,70 +0,0 @@ -// -------------------------------------------------------------------------- -// THIS FILE WAS AUTOMATICALLY GENERATED -// -// Please do not submit pull request to modify it. Corrections to translations -// may be submitted at https://translate.loophabits.org/ -// -------------------------------------------------------------------------- - -package org.isoron.uhabits.i18n - -class StringsFinnish : Strings() { - override val app_name = "Rutiini - Tracker" - override val main_activity_title = "Rutiinit" - override val action_settings = "Asetukset" - override val edit = "Muokkaa" - override val delete = "Poista" - override val archive = "Arkistoi" - override val add_habit = "Lisää rutiini" - override val color_picker_default_title = "Vaihda väriä" - override val toast_habit_created = "Rutiini luotu" - override val toast_habit_deleted = "Rutiinit poistettu" - override val toast_habit_restored = "Rutiinit palautettu" - override val toast_habit_changed = "Rutiini muutettu" - override val toast_habit_changed_back = "Rutiini muutettu takaisin" - override val overview = "Yleiskatsaus" - override val history = "Historia" - override val clear = "Tyhjennä" - override val description_hint = "Kysymys (Teitkö... tänään?)" - override val repeat = "Toista" - override val times_every = "kertaa" - override val days = "päivässä" - override val reminder = "Muistutus" - override val discard = "Hylkää" - override val save = "Tallenna" - override val streaks = "Pisimmät toistot" - override val no_habits_found = "Ei aktiivisia rutiineja" - override val long_press_to_toggle = "Paina pitkään merkitäksesi suoritetuksi tai postaaksesi suorituksen" - override val reminder_off = "Pois päältä" - override val validation_name_should_not_be_blank = "Nimi ei voi olla tyhjä." - override val validation_number_should_be_positive = "Luvun on oltava positiivinen." - override val create_habit = "Luo rutiini" - override val edit_habit = "Muokkaa rutiinia" - override val check = "Tehty" - override val snooze = "Lykkää" - override val intro_title_1 = "Tervetuloa" - override val intro_title_2 = "Merkitse uusia rutiineja" - override val intro_description_2 = "Joka päivä, suoritettuasi rutiinin, merkitse se sovellukseen." - override val links = "Linkit" - override val behavior = "Käyttäytyminen" - override val name = "Nimi" - override val settings = "Asetukset" - override val hint_title = "Tiesitkö?" - override val done_label = "Valmis" - override val clear_label = "Tyhjennä" - override val translators = "Kääntäjät" - override val developers = "Kehittäjät" - override val version_n = "Versio %s" - override val every_day = "Joka päivä" - override val every_week = "Joka viikko" - override val two_times_per_week = "2 kertaa viikossa" - override val five_times_per_week = "5 kertaa viikossa" - override val custom_frequency = "Mukautettu…" - override val night_mode = "Yötila" - override val use_pure_black = "Käytä puhdasta mustaa yötilassa" - override val day = "Päivä" - override val week = "Viikko" - override val month = "Kuukausi" - override val quarter = "Kvartaali" - override val year = "Vuosi" - override val total = "Yhteensä" -} diff --git a/core/src/main/common/org/isoron/uhabits/i18n/StringsFrench.kt b/core/src/main/common/org/isoron/uhabits/i18n/StringsFrench.kt deleted file mode 100644 index c1406ec56..000000000 --- a/core/src/main/common/org/isoron/uhabits/i18n/StringsFrench.kt +++ /dev/null @@ -1,165 +0,0 @@ -// -------------------------------------------------------------------------- -// THIS FILE WAS AUTOMATICALLY GENERATED -// -// Please do not submit pull request to modify it. Corrections to translations -// may be submitted at https://translate.loophabits.org/ -// -------------------------------------------------------------------------- - -package org.isoron.uhabits.i18n - -class StringsFrench : Strings() { - override val app_name = "Loop - Suivi d\'habitudes" - override val main_activity_title = "Habitudes" - override val action_settings = "Paramètres" - override val edit = "Modifier" - override val delete = "Supprimer" - override val archive = "Archiver" - override val unarchive = "Désarchiver" - override val add_habit = "Ajouter une habitude" - override val color_picker_default_title = "Changer la couleur" - override val toast_habit_created = "Habitude créée" - override val toast_habit_deleted = "Habitudes supprimées" - override val toast_habit_restored = "Habitudes rétablies" - override val toast_nothing_to_undo = "Rien à annuler" - override val toast_nothing_to_redo = "Rien à refaire" - override val toast_habit_changed = "Habitude changée" - override val toast_habit_changed_back = "Habitude restaurée" - override val toast_habit_archived = "Habitudes archivées" - override val toast_habit_unarchived = "Habitudes désarchivées" - override val overview = "Vue d\'ensemble" - override val habit_strength = "Force de l\'habitude" - override val history = "Historique" - override val clear = "Supprimer" - override val description_hint = "Question (As-tu ... aujourd\'hui ?)" - override val repeat = "Répéter" - override val times_every = "fois en" - override val days = "jours" - override val reminder = "Rappel" - override val discard = "Annuler" - override val save = "Sauvegarder" - override val streaks = "Séries" - override val no_habits_found = "Vous n\'avez pas d\'habitudes actives" - override val long_press_to_toggle = "Appuyez longtemps pour cocher ou décocher" - override val reminder_off = "Aucun" - override val validation_name_should_not_be_blank = "Le nom ne peut être vide." - override val validation_number_should_be_positive = "Le nombre doit être positif." - override val validation_at_most_one_rep_per_day = "Vous pouvez avoir au plus une répétition par jour" - override val create_habit = "Créer une habitude" - override val edit_habit = "Modifier l\'habitude" - override val check = "Cocher" - override val snooze = "Plus tard" - override val intro_title_1 = "Bienvenue" - override val intro_description_1 = "Loop - Suivi d\'habitudes vous aide à créer et maintenir de bonnes habitudes." - override val intro_title_2 = "Créez de nouvelles habitudes" - override val intro_description_2 = "Chaque jour, après avoir réalisé votre habitude, cochez-la sur l\'application." - override val intro_title_3 = "Continuez à le faire" - override val intro_description_3 = "Les habitudes régulières pendant une période de temps étendue gagneront une étoile complète." - override val intro_title_4 = "Suivez votre progrès" - override val intro_description_4 = "Des graphiques détaillés vous montrent comment vos habitudes évoluent au fil du temps." - override val interval_15_minutes = "15 minutes" - override val interval_30_minutes = "30 minutes" - override val interval_1_hour = "1 heure" - override val interval_2_hour = "2 heures" - override val interval_4_hour = "4 heures" - override val interval_8_hour = "8 heures" - override val interval_24_hour = "24 heures" - override val pref_toggle_title = "Valider l\'habitude avec un appui court" - override val pref_toggle_description = "Valide l\'habitude avec un appui court plutôt qu\'un appuie long. Plus pratique, mais peut causer des activations accidentelles." - override val pref_snooze_interval_title = "Intervalle de report des rappels" - override val pref_rate_this_app = "Notez cette app sur le Google Play Store" - override val pref_send_feedback = "Envoyez un avis au développeur" - override val pref_view_source_code = "Voir le code source sur GitHub" - override val pref_view_app_introduction = "Voir l\'introduction de l\'app" - override val links = "Liens" - override val behavior = "Comportement" - override val name = "Nom" - override val settings = "Paramètres" - override val snooze_interval = "Intervalle de report" - override val hint_title = "Le saviez-vous ?" - override val hint_drag = "Pour réordonner les habitudes, faites un appui long sur le nom de l\'habitude et placez-la à la bonne place." - override val hint_landscape = "Vous pouvez voir plus de jours en mettant votre téléphone en mode paysage." - override val delete_habits = "Supprimer des habitudes" - override val delete_habits_message = "Les habitudes seront supprimées définitivement. Cette action est irréversible." - override val habit_not_found = "Habitude supprimée / introuvable" - override val weekends = "Weekends" - override val any_weekday = "Du lundi au vendredi" - override val any_day = "N\'importe quel jour" - override val select_weekdays = "Sélectionner des jours" - override val export_to_csv = "Exporter les données dans un fichier CSV" - override val done_label = "Fait" - override val clear_label = "Supprimer" - override val select_hours = "Sélectionner les heures" - override val select_minutes = "Sélectionner les minutes" - override val about = "À propos" - override val translators = "Traducteurs" - override val developers = "Développeurs" - override val version_n = "Version %s" - override val frequency = "Fréquence" - override val checkmark = "Case à cocher" - override val strength = "Force" - override val best_streaks = "Meilleures séries" - override val current_streaks = "Série actuelle" - override val number_of_repetitions = "Nombre de répétitions" - override val last_x_days = "%d derniers jours" - override val last_x_weeks = "%d dernières semaines" - override val last_x_months = "%d derniers mois" - override val last_x_years = "%d dernières années" - override val all_time = "Depuis le début" - override val every_day = "Tous les jours" - override val every_week = "Toutes les semaines" - override val two_times_per_week = "2 fois par semaine" - override val five_times_per_week = "5 fois par semaine" - override val custom_frequency = "Personnalisée ..." - override val help = "Aide & FAQ" - override val could_not_export = "Export des données échoué." - override val could_not_import = "Import des données échoué." - override val file_not_recognized = "Fichier non reconnu" - override val habits_imported = "Habitudes importées avec succès" - override val full_backup_success = "Sauvegarde complète exportée avec succès" - override val import_data = "Importer des données" - override val export_full_backup = "Exporter une sauvegarde complète" - override val import_data_summary = "Supporte les sauvegardes complètes générées par cette application, ainsi que les fichiers Tickmate, HabitBull et Rewire. Voir la FAQ pour plus d\'informations." - override val export_as_csv_summary = "Génère des fichiers pouvant être ouverts par des tableurs comme Microsoft Excel ou LibreOffice Calc. Ce fichier ne peut pas être réimporté." - override val export_full_backup_summary = "Génère un fichier contenant toutes vos données. Ce fichier peut être réimporté." - override val bug_report_failed = "La génération du rapport de bug a échouée." - override val generate_bug_report = "Générer un rapport de bug." - override val troubleshooting = "Résolution de problèmes" - override val help_translate = "Aider à traduire cette application" - override val night_mode = "Mode Nuit" - override val use_pure_black = "Utiliser un noir pur dans le mode nuit" - override val pure_black_description = "Remplacer le fond gris par un noir pur dans le mode nuit ; ça réduit l’usage de la batterie des appareils ayant un écran AMOLED." - override val interface_preferences = "Interface" - override val reverse_days = "Inverser l\'ordre des jours" - override val reverse_days_description = "Montrer les jours dans l\'ordre inversé sur l\'écran principal" - override val day = "Jour" - override val week = "Semaine" - override val month = "Mois" - override val quarter = "Trimestre" - override val year = "Année" - override val total = "Total" - override val time_every = "fois tous les" - override val every_x_days = "Tous les %d jours" - override val every_x_weeks = "Toutes les %d semaines" - override val every_x_months = "Tous les %d mois" - override val score = "Score" - override val reminder_sound = "Son de rappel" - override val none = "Aucun" - override val filter = "Filtre" - override val hide_completed = "Cacher les habitudes complétées" - override val hide_archived = "Cacher les habitudes archivées" - override val sticky_notifications = "Rendre les notifications persistantes" - override val sticky_notifications_description = "Évite que les notifications ne soient enlevées." - override val repair_database = "Réparer la base de données" - override val database_repaired = "Base de données réparée." - override val uncheck = "Décocher" - override val toggle = "Basculer" - override val action = "Action" - override val habit = "Habitude" - override val sort = "Trier" - override val manually = "Manuellement" - override val by_name = "Par nom" - override val by_color = "Par couleur" - override val by_score = "Par score" - override val download = "Télécharger" - override val export = "Exporter" -} diff --git a/core/src/main/common/org/isoron/uhabits/i18n/StringsGerman.kt b/core/src/main/common/org/isoron/uhabits/i18n/StringsGerman.kt deleted file mode 100644 index d0b865a84..000000000 --- a/core/src/main/common/org/isoron/uhabits/i18n/StringsGerman.kt +++ /dev/null @@ -1,165 +0,0 @@ -// -------------------------------------------------------------------------- -// THIS FILE WAS AUTOMATICALLY GENERATED -// -// Please do not submit pull request to modify it. Corrections to translations -// may be submitted at https://translate.loophabits.org/ -// -------------------------------------------------------------------------- - -package org.isoron.uhabits.i18n - -class StringsGerman : Strings() { - override val app_name = "Loop \"Gewohnheiten Tracking\"" - override val main_activity_title = "Gewohnheiten" - override val action_settings = "Einstellungen" - override val edit = "Bearbeiten" - override val delete = "Löschen" - override val archive = "Archivieren" - override val unarchive = "Dearchivieren" - override val add_habit = "Gewohnheit hinzufügen" - override val color_picker_default_title = "Farbe ändern" - override val toast_habit_created = "Gewohnheit erstellt" - override val toast_habit_deleted = "Gewohnheiten gelöscht" - override val toast_habit_restored = "Gewohnheiten wiederhergestellt" - override val toast_nothing_to_undo = "Nichts zum Rückgängig machen" - override val toast_nothing_to_redo = "Nichts zum Wiederherstellen" - override val toast_habit_changed = "Gewohnheit geändert" - override val toast_habit_changed_back = "Gewohnheit zurückgeändert" - override val toast_habit_archived = "Gewohnheiten archiviert" - override val toast_habit_unarchived = "Gewohnheiten dearchiviert" - override val overview = "Übersicht" - override val habit_strength = "Stärke" - override val history = "Verlauf" - override val clear = "Löschen" - override val description_hint = "Frage (Hast du heute ...?)" - override val repeat = "Wiederhole" - override val times_every = "Mal in" - override val days = "Tagen" - override val reminder = "Erinnerung" - override val discard = "Verwerfen" - override val save = "Speichern" - override val streaks = "Serien" - override val no_habits_found = "Du hast keine aktiven Gewohnheiten" - override val long_press_to_toggle = "Tippe und halte um aus- bzw. abzuwählen" - override val reminder_off = "Aus" - override val validation_name_should_not_be_blank = "Name darf nicht leer sein." - override val validation_number_should_be_positive = "Zahl muss positiv sein." - override val validation_at_most_one_rep_per_day = "Du kannst höchstens eine Wiederholung pro Tag haben" - override val create_habit = "Gewohnheit erstellen" - override val edit_habit = "Gewohnheit bearbeiten" - override val check = "Markieren" - override val snooze = "Später" - override val intro_title_1 = "Willkommen" - override val intro_description_1 = "Loop Habit Tracker hilft dir dabei, gute Gewohnheiten anzunehmen." - override val intro_title_2 = "Erstelle neue Gewohnheiten" - override val intro_description_2 = "Hake die Gewohnheit jeden Tag in der App ab, nachdem du sie erledigt hast." - override val intro_title_3 = "Bleib dran" - override val intro_description_3 = "Gewohnheiten, die über einen längeren Zeitraum absolviert werden, bekommen einen ganzen Stern." - override val intro_title_4 = "Verfolge deinen Fortschritt" - override val intro_description_4 = "Detaillierte Diagramme zeigen dir an, wie sich deine Gewohnheiten entwickelt haben." - override val interval_15_minutes = "15 Minuten" - override val interval_30_minutes = "30 Minuten" - override val interval_1_hour = "1 Stunde" - override val interval_2_hour = "2 Stunden" - override val interval_4_hour = "4 Stunden" - override val interval_8_hour = "8 Stunden" - override val interval_24_hour = "24 Stunden" - override val pref_toggle_title = "Markierung durch kurzes Drücken ändern" - override val pref_toggle_description = "Markierungen durch einfaches Tippen setzen anstatt durch Tippen und Halten. Bequemer, kann aber versehentlich eine Markierung ändern." - override val pref_snooze_interval_title = "\"Später erinnern\"-Intervall bei Erinnerungen" - override val pref_rate_this_app = "Bewerte diese App auf Google Play" - override val pref_send_feedback = "Sende dem Entwickler Feedback" - override val pref_view_source_code = "Zeige den Quellcode auf GitHub" - override val pref_view_app_introduction = "Zeige die App-Einführung" - override val links = "Links" - override val behavior = "Verhalten" - override val name = "Name" - override val settings = "Einstellungen" - override val snooze_interval = "\"Später erinnern\"-Intervall" - override val hint_title = "Wusstest du?" - override val hint_drag = "Um Einträge umzusortieren, tippe, halte und ziehe sie an die richtige Stelle." - override val hint_landscape = "Du kannst mehr Tage sehen, wenn du dein Smartphone quer hältst." - override val delete_habits = "Lösche Gewohnheiten" - override val delete_habits_message = "Die Gewohnheit wird für immer gelöscht. Dies kann nicht rückgängig gemacht werden." - override val habit_not_found = "Gewohnheit gelöscht / nicht gefunden" - override val weekends = "An Wochenenden" - override val any_weekday = "Montag bis Freitag" - override val any_day = "Jeden Tag" - override val select_weekdays = "Wähle Tage aus" - override val export_to_csv = "Exportiere als CSV" - override val done_label = "Fertig" - override val clear_label = "Löschen" - override val select_hours = "Wähle Stunden" - override val select_minutes = "Wähle Minuten" - override val about = "Über" - override val translators = "Übersetzer" - override val developers = "Entwickler" - override val version_n = "Version %s" - override val frequency = "Häufigkeit" - override val checkmark = "Häkchen" - override val strength = "Stärke" - override val best_streaks = "Beste Serien" - override val current_streaks = "Derzeitige Serie" - override val number_of_repetitions = "Anzahl der Wiederholungen" - override val last_x_days = "Letzten %d Tage" - override val last_x_weeks = "Letzten %d Wochen" - override val last_x_months = "Letzten %d Monate" - override val last_x_years = "Letzten %d Jahre" - override val all_time = "Allzeit" - override val every_day = "Jeden Tag" - override val every_week = "Jede Woche" - override val two_times_per_week = "2 Mal pro Woche" - override val five_times_per_week = "5 Mal pro Woche" - override val custom_frequency = "Benutzerdefiniert" - override val help = "Hilfe & FAQ" - override val could_not_export = "Fehler beim Exportieren der Daten." - override val could_not_import = "Fehler beim Importieren der Daten." - override val file_not_recognized = "Datei nicht erkannt." - override val habits_imported = "Gewohnheiten erfolgreich importiert." - override val full_backup_success = "Vollständige Sicherung erfolgreich exportiert." - override val import_data = "Importiere Daten" - override val export_full_backup = "Exportiere vollständige Sicherung" - override val import_data_summary = "Unterstützt vollständige Sicherungen dieser App sowie Sicherungen von Tickmate, HabitBull und Rewire. Siehe FAQ für weitere Informationen." - override val export_as_csv_summary = "Erstellt Dateien, die von Tabellenkalkulationsprogrammen wie Microsoft Excel oder LibreOffice Calc geöffnet werden können. Diese Dateien können nicht wieder importiert werden." - override val export_full_backup_summary = "Erstellt eine Datei, die alle deine Daten enthält. Diese Datei kann wieder importiert werden." - override val bug_report_failed = "Fehler beim Erstellen eines Fehlerberichts." - override val generate_bug_report = "Erstelle einen Fehlerbericht" - override val troubleshooting = "Fehlerbehebung" - override val help_translate = "Hilf mit, diese App zu übersetzen" - override val night_mode = "Nachtmodus" - override val use_pure_black = "Verwende reines Schwarz im Nachtmodus" - override val pure_black_description = "Ersetzt im Nachtmodus das Grau im Hintergrund durch ein reines Schwarz. Reduziert den Stromverbrauch von Smartphones mit einem AMOLED Display." - override val interface_preferences = "Oberfläche" - override val reverse_days = "Kehre die Tagesreihenfolge um" - override val reverse_days_description = "Zeigt die Tage im Hauptfenster in umgekehrter Reihenfolge an" - override val day = "Tag" - override val week = "Woche" - override val month = "Monat" - override val quarter = "Quartal" - override val year = "Jahr" - override val total = "Gesamt" - override val time_every = "Mal in" - override val every_x_days = "Alle %d Tage" - override val every_x_weeks = "Alle %d Wochen" - override val every_x_months = "Alle %d Monate" - override val score = "Wertung" - override val reminder_sound = "Erinnerungston" - override val none = "Keiner" - override val filter = "Filter" - override val hide_completed = "Abgeschlossene verbergen" - override val hide_archived = "Archivierte verbergen" - override val sticky_notifications = "Fixiere Benachrichtigungen" - override val sticky_notifications_description = "Verhindert das Wegwischen von Benachrichtigungen." - override val repair_database = "Repariere Datenbank" - override val database_repaired = "Datenbank repariert." - override val uncheck = "Abwählen" - override val toggle = "Umschalten" - override val action = "Aktion" - override val habit = "Gewohnheit" - override val sort = "Sortiere" - override val manually = "Manuell" - override val by_name = "Nach Name" - override val by_color = "Nach Farbe" - override val by_score = "Nach Wertung" - override val download = "Runterladen" - override val export = "Exportieren" -} diff --git a/core/src/main/common/org/isoron/uhabits/i18n/StringsGreek.kt b/core/src/main/common/org/isoron/uhabits/i18n/StringsGreek.kt deleted file mode 100644 index 8c9015135..000000000 --- a/core/src/main/common/org/isoron/uhabits/i18n/StringsGreek.kt +++ /dev/null @@ -1,144 +0,0 @@ -// -------------------------------------------------------------------------- -// THIS FILE WAS AUTOMATICALLY GENERATED -// -// Please do not submit pull request to modify it. Corrections to translations -// may be submitted at https://translate.loophabits.org/ -// -------------------------------------------------------------------------- - -package org.isoron.uhabits.i18n - -class StringsGreek : Strings() { - override val app_name = "Loop - Καταγραφή Συνηθειών" - override val main_activity_title = "Συνήθειες" - override val action_settings = "Ρυθμίσεις" - override val edit = "Επεξεργασία" - override val delete = "Διαγραφή" - override val archive = "Αρχειοθέτηση" - override val unarchive = "Κατάργηση αρχειοθέτησης" - override val add_habit = "Νέα συνήθεια" - override val color_picker_default_title = "Αλλαγή χρώματος" - override val toast_habit_created = "Δημιουργήθηκε συνήθεια." - override val toast_habit_deleted = "Συνήθεια διαγράφτηκε." - override val toast_habit_restored = "Η συνήθεια επαναφέρθηκε." - override val toast_nothing_to_undo = "Τίποτα για αναίρεση" - override val toast_nothing_to_redo = "Τίποτα προς επανάληψη." - override val toast_habit_changed = "Η συνήθεια άλλαξε" - override val toast_habit_changed_back = "Δεν έγινε αλλαγή." - override val toast_habit_archived = "Η συνήθεια αρχειοθετήθηκε." - override val toast_habit_unarchived = "Έγινε αφαίρεση αρχειοθέτησης." - override val overview = "Επισκόπηση" - override val habit_strength = "Δύναμη συνήθειας" - override val history = "Ιστορικό" - override val clear = "Εκκαθάριση" - override val description_hint = "Ερώτηση (Κάνατε...σήμερα;)" - override val repeat = "Επανέλαβε" - override val times_every = "φορές την" - override val days = "ημέρες" - override val reminder = "Υπενθύμιση" - override val discard = "Απόρριψη" - override val save = "Αποθήκευση" - override val streaks = "Σερί" - override val no_habits_found = "Δεν έχετε ενεργές συνήθειες" - override val long_press_to_toggle = "Πατήστε παρατεταμένα για επιλογή η αποεπιλογή" - override val reminder_off = "Χωρίς" - override val validation_name_should_not_be_blank = "Το όνομα δεν μπορεί να είναι κενό" - override val validation_number_should_be_positive = "Πρεπει να είναι θετικό" - override val validation_at_most_one_rep_per_day = "Μπορείτε να κάνετε μονάχα μία επανάληψη ανά ημέρα" - override val create_habit = "Δημιουργία συνήθειας" - override val edit_habit = "Επεξεργασία συνήθειας" - override val check = "Επιλογή" - override val snooze = "Αργότερα" - override val intro_title_1 = "Καλώς ορίσατε" - override val intro_description_1 = "Το Loop - Καταγραφή Συνηθειών σας βοηθάει να δημιουργήσετε και να διατηρήσετε καλές συνήθειες." - override val intro_title_2 = "Δημιουργήστε μερικές νέες συνήθειες" - override val intro_description_2 = "Κάθε μέρα, με το πέρας της συνήθειας, βάλτε ένα τικ στην εφαρμογή." - override val intro_title_3 = "Συνεχίστε να το κάνετε" - override val intro_description_3 = "Συνήθειες που εκτελούνται με συνέπεια για πολύ καιρό" - override val intro_title_4 = "Κατέγραψε την πρόοδο σου" - override val intro_description_4 = "Λεπτομερή διαγράμματα σας δείχνουν την πρόοδο των συνηθειών." - override val interval_15_minutes = "15 λεπτά" - override val interval_30_minutes = "30 λεπτά" - override val interval_1_hour = "1 ώρα" - override val interval_2_hour = "2 ώρες" - override val interval_4_hour = "4 ώρες" - override val interval_8_hour = "8 ώρες" - override val pref_toggle_title = "Κάντε εναλλαγή των επαναλήψεων με σύντομο πάτημα" - override val pref_toggle_description = "Βολικότερο, αλλά ίσως προκαλέσει ακούσιες εναλλαγές." - override val pref_snooze_interval_title = "Διάστημα αναβολής υπενθυμίσεων" - override val pref_rate_this_app = "Βαθμολογήστε αυτή την εφαρμογή στο Google Play" - override val pref_send_feedback = "Στείλετε σχόλια" - override val pref_view_source_code = "Δείτε τον πηγαίο κώδικα στο GitHub" - override val pref_view_app_introduction = "Δείτε την εισαγωγή" - override val links = "Σύνδεσμοι" - override val behavior = "Συμπεριφορά" - override val name = "Όνομα" - override val settings = "Ρυθμίσεις" - override val snooze_interval = "Διάστημα αναβολής" - override val hint_title = "Γνωρίζατε;" - override val hint_drag = "Αναδιατάξετε τις συνήθειες πατώντας παρατεταμένα στο όνομα και σύροντας στην σωστή θέση." - override val hint_landscape = "Μπορείτε να δείτε περισσότερες ημέρες στην οριζόντια προβολή." - override val delete_habits = "Διαγραφή συνηθειών" - override val delete_habits_message = "Οι συνήθειες θα διαγραφτούν οριστικά. Αυτό δεν μπορεί να αναιρεθεί." - override val weekends = "Σαββατοκύριακα" - override val any_weekday = "Δευτέρα μέχρι Παρασκευή" - override val any_day = "Οποιαδήποτε μέρα της εβδομάδας" - override val select_weekdays = "Επιλογή ημερών" - override val export_to_csv = "Εξαγωγή σαν CSV" - override val done_label = "Έγινε" - override val clear_label = "Εκκαθάριση" - override val select_hours = "Επιλογή ωρών" - override val select_minutes = "Επιλογή λεπτών" - override val about = "Σχετικά με" - override val translators = "Μεταφραστές" - override val developers = "Προγραμματιστές" - override val version_n = "Έκδοση %s" - override val frequency = "Συχνότητα" - override val checkmark = "Σημάδι επιλογής" - override val strength = "Δύναμη" - override val best_streaks = "Καλύτερα σερί" - override val current_streaks = "Τρέχον σερί" - override val number_of_repetitions = "Αριθμός επαναλήψεων" - override val last_x_days = "Τελευταίες %d ημέρες" - override val last_x_weeks = "Τελευταίες %d εβδομάδες" - override val last_x_months = "Τελευταίους %d μήνες" - override val last_x_years = "Τελευταία %d χρόνια" - override val all_time = "Όλα" - override val every_day = "Κάθε μέρα" - override val every_week = "Κάθε εβδομάδα" - override val two_times_per_week = "2 φορές την εβδομάδα" - override val five_times_per_week = "5 φορές την εβδομάδα" - override val custom_frequency = "Προσαρμογή" - override val help = "Βοήθεια & FAQ" - override val could_not_export = "Αποτυχία εξαγωγής." - override val could_not_import = "Αποτυχία εισαγωγής." - override val file_not_recognized = "Άγνωστο αρχείο." - override val habits_imported = "Οι συνήθειες εισάχθηκαν επιτυχώς." - override val full_backup_success = "Το πλήρες αντίγραφο εξάχθηκε επιτυχώς." - override val import_data = "Εισαγωγή δεδομένων" - override val export_full_backup = "Εξαγωγή πλήρους αντιγ. ασφαλείας" - override val import_data_summary = "Υποστηρίζει πλήρως αντίγραφα ασφαλείας που έχουν εξαχθεί από την ίδια την εφαρμογή καθώς και από τα Tickmate, HabitBull και Rewire. Δείτε τις FAQ για περισσότερες πληροφορίες." - override val export_as_csv_summary = "Παράγει αρχεία τα οποία μπορούν να ανοιχτούν από προγράμματα υπολογιστικών φύλλων όπως το Microsoft Edge ή το OpenOffice Calc. Δεν γίνεται επανεισαγωγή του αρχείου." - override val export_full_backup_summary = "Παράγει ένα αρχείο το οποίο περιέχει όλα τα δεδομένα σας. Είναι δυνατή η επανεισαγωγή του αρχείου." - override val bug_report_failed = "Απέτυχε ή παραγωγή αναφοράς bug." - override val generate_bug_report = "Παραγωγή αναφοράς bug." - override val troubleshooting = "Αντιμετ.Προβλημάτων" - override val help_translate = "Βοηθήστε στην μετάφραση" - override val night_mode = "Νυχτ.Λειτ." - override val use_pure_black = "Χρήση απόλυτου μαύρου στη νυχτ.λειτουργία" - override val pure_black_description = "Αντικαθιστά τα γκρί υπόβαθρα με απόλυτα μαύρα σε νυχτ.λειτουργία. Μειώνει την κατανάλωση μπαταρίας σε συσκευές με οθόνη AMOLED." - override val interface_preferences = "Διεπιφάνεια" - override val reverse_days = "Αναστροφή σειράς των ημερών." - override val reverse_days_description = "Προβολή των ημερών σε αντίστροφη σειρά στην κυρία οθόνη." - override val day = "Ημέρα" - override val week = "Εβδομάδα" - override val month = "Μήνας" - override val quarter = "Τρίμηνο" - override val year = "Χρόνος" - override val time_every = "φορά σε" - override val every_x_days = "Κάθε %d ημέρες" - override val every_x_weeks = "Κάθε %d εβδομάδες" - override val every_x_months = "Κάθε %d μήνες" - override val score = "Σκόρ" - override val reminder_sound = "Ήχος υπενθύμισης" - override val none = "Σιωπηλό" -} diff --git a/core/src/main/common/org/isoron/uhabits/i18n/StringsHebrew.kt b/core/src/main/common/org/isoron/uhabits/i18n/StringsHebrew.kt deleted file mode 100644 index 79fedf11d..000000000 --- a/core/src/main/common/org/isoron/uhabits/i18n/StringsHebrew.kt +++ /dev/null @@ -1,165 +0,0 @@ -// -------------------------------------------------------------------------- -// THIS FILE WAS AUTOMATICALLY GENERATED -// -// Please do not submit pull request to modify it. Corrections to translations -// may be submitted at https://translate.loophabits.org/ -// -------------------------------------------------------------------------- - -package org.isoron.uhabits.i18n - -class StringsHebrew : Strings() { - override val app_name = "Loop Habit Tracker" - override val main_activity_title = "הרגלים" - override val action_settings = "הגדרות" - override val edit = "עריכה" - override val delete = "מחיקה" - override val archive = "ארכיון" - override val unarchive = "הוצא מארכיון" - override val add_habit = "הרגל חדש" - override val color_picker_default_title = "שינוי צבע" - override val toast_habit_created = "הרגל נוצר" - override val toast_habit_deleted = "הרגלים נמחקו" - override val toast_habit_restored = "הרגלים שוחזרו" - override val toast_nothing_to_undo = "אין מה לבטל" - override val toast_nothing_to_redo = "אין מה לבצע שוב" - override val toast_habit_changed = "הרגל השתנה" - override val toast_habit_changed_back = "הרגל השתנה בחזרה" - override val toast_habit_archived = "הרגלים הועברו לארכיון" - override val toast_habit_unarchived = "הרגלים הוצאו מארכיון" - override val overview = "מבט על" - override val habit_strength = "חוזק ההרגל" - override val history = "היסטוריה" - override val clear = "נקה" - override val description_hint = "שאלה (האם ... היום?)" - override val repeat = "חזור" - override val times_every = "פעמים ב-" - override val days = "ימים" - override val reminder = "תזכורת" - override val discard = "ביטול" - override val save = "שמירה" - override val streaks = "רצפים" - override val no_habits_found = "אין לך הרגלים פעילים" - override val long_press_to_toggle = "לחץ והחזק לסימון או ביטול הסימון" - override val reminder_off = "כבוי" - override val validation_name_should_not_be_blank = "השם אינו יכול להישאר ריק." - override val validation_number_should_be_positive = "מספר חייב להיות חיובי." - override val validation_at_most_one_rep_per_day = "לא ניתן להגדיר יותר מחזרה אחת ביום" - override val create_habit = "צור הרגל" - override val edit_habit = "ערוך הרגל" - override val check = "בוצע" - override val snooze = "מאוחר יותר" - override val intro_title_1 = "ברוכים הבאים" - override val intro_description_1 = "Loop Habit Tracker מסייע ליצור ולשמר הרגלים טובים." - override val intro_title_2 = "צרו הרגלים חדשים" - override val intro_description_2 = "כל יום, אחרי ביצוע ההרגל סמנו זאת באפליקציה." - override val intro_title_3 = "המשיכו לעשות זאת" - override val intro_description_3 = "הרגלים שיבוצעו בעקביות לאורך זמן רב יזכו בכוכב מלא." - override val intro_title_4 = "מעקב התקדמות" - override val intro_description_4 = "גרפים מפורטים מציגים כיצד ההרגלים שלך משתפרים לאורך זמן." - override val interval_15_minutes = "15 דקות" - override val interval_30_minutes = "30 דקות" - override val interval_1_hour = "1 שעה" - override val interval_2_hour = "2 שעות" - override val interval_4_hour = "4 שעות" - override val interval_8_hour = "8 שעות" - override val interval_24_hour = "24 שעות" - override val pref_toggle_title = "סימון הרגלים בלחיצה קצרה" - override val pref_toggle_description = "סמנו יעדים בהקשה קצרה במקום לחיצה ממושכת. נוח יותר, אך יכול להוביל ללחיצות לא מכוונות." - override val pref_snooze_interval_title = "מרווח נדנוד לתזכורות" - override val pref_rate_this_app = "דרג/י אותנו ב- Google Play" - override val pref_send_feedback = "שליחת משוב למפתחים" - override val pref_view_source_code = "צפייה בקוד המקור ב-GitHub" - override val pref_view_app_introduction = "צפייה בפרטים אודות האפליקציה" - override val links = "קישורים" - override val behavior = "התנהגות" - override val name = "שם" - override val settings = "הגדרות" - override val snooze_interval = "זמן בין נדנודים" - override val hint_title = "הידעת?" - override val hint_drag = "לשינוי סדר הההרגלים, לחצו לחיצה ארוכה על ההרגל וגררו אותו למקום הרצוי." - override val hint_landscape = "ניתן לראות ימים נוספים ע\"י סיבוב המסך לתצוגה רוחבית." - override val delete_habits = "מחיקת הרגלים" - override val delete_habits_message = "ההרגלים יימחקו לצמיתות. פעולה זו אינה ניתנת לביטול." - override val habit_not_found = "הרגל נמחק / לא נמצא" - override val weekends = "סופי שבוע" - override val any_weekday = "ימי חול" - override val any_day = "כל יום בשבוע" - override val select_weekdays = "בחירת ימים" - override val export_to_csv = "ייצוא כקובץ CSV" - override val done_label = "בוצע" - override val clear_label = "נקה" - override val select_hours = "בחר שעות" - override val select_minutes = "בחר דקות" - override val about = "אודות" - override val translators = "מתרגמים" - override val developers = "מפתחים" - override val version_n = "גרסה %s" - override val frequency = "תדירות" - override val checkmark = "סימון הרגל" - override val strength = "חוזק" - override val best_streaks = "רצף שיא" - override val current_streaks = "רצף נוכחי" - override val number_of_repetitions = "מספר חזרות" - override val last_x_days = "%d הימים האחרונים" - override val last_x_weeks = "%d השבועות האחרונים" - override val last_x_months = "%d החודשים האחרונים" - override val last_x_years = "%d השנים האחרונות" - override val all_time = "בכל הזמנים" - override val every_day = "כל יום" - override val every_week = "כל שבוע" - override val two_times_per_week = "פעמיים בשבוע" - override val five_times_per_week = "5 פעמים בשבוע" - override val custom_frequency = "מותאם אישית…" - override val help = "עזרה ושאלות נפוצות" - override val could_not_export = "ייצוא נתונים נכשל." - override val could_not_import = "ייבוא נתונים נכשל." - override val file_not_recognized = "קובץ לא מזוהה." - override val habits_imported = "הרגלים יובאו בהצלחה." - override val full_backup_success = "גיבוי מלא יוצאה בהצלחה." - override val import_data = "ייבוא נתונים" - override val export_full_backup = "ייצוא גיבוי מלא" - override val import_data_summary = "תומך בכל הגיבויים שיוצאו ע\"י האפליקציה. כמו גם קבצים שנוצרו ע\"י Tickmate, HabitBull או Rewire. לפרטים נוספים ראו שאלות נפוצות." - override val export_as_csv_summary = "יוצר קבצים שניתן לפתוח על-ידי תוכנות גיליון אלקטרוני כגון Microsoft Excel או OpenOffice. אין אפשרות לייבא את הקובץ בחזרה." - override val export_full_backup_summary = "יוצר קובץ המכיל את כל הנתונים שלך. קובץ זה ניתן לייבא בחזרה." - override val bug_report_failed = "הפקת דוח שגיאות נכשלה." - override val generate_bug_report = "הפקת דוח שגיאות" - override val troubleshooting = "פתרון תקלות" - override val help_translate = "עזרו לנו לתרגם את האפליקציה" - override val night_mode = "מצב לילה" - override val use_pure_black = "רקע שחור למצב לילה" - override val pure_black_description = "החלפת הרקע האפור במצב לילה לשחור מוחלט. מפחית בזבוז סוללה במכשירים עם תצוגת AMOLED." - override val interface_preferences = "ממשק" - override val reverse_days = "הפיכת סדר הימים" - override val reverse_days_description = "מציג ימים בסדר הפוך במסך הראשי" - override val day = "יום" - override val week = "שבוע" - override val month = "חודש" - override val quarter = "רבעון" - override val year = "שנה" - override val total = "סה\"כ" - override val time_every = "פעמים ב-" - override val every_x_days = "כל %d ימים" - override val every_x_weeks = "כל %d שבועות" - override val every_x_months = "כל %d חודשים" - override val score = "ציון" - override val reminder_sound = "צליל תזכורת" - override val none = "ללא" - override val filter = "סינון" - override val hide_completed = "הסתר יעדים שהושלמו" - override val hide_archived = "הסתר ארכיון" - override val sticky_notifications = "צור תזכורות \"דביקות\"" - override val sticky_notifications_description = "מונע החלקת וביטול תזכורות." - override val repair_database = "תיקון מסד נתונים" - override val database_repaired = "מאגר נתונים תוקן." - override val uncheck = "ביטול סימון" - override val toggle = "הפעלה כיבוי" - override val action = "פעולה" - override val habit = "הרגל" - override val sort = "מיון" - override val manually = "באופן ידני" - override val by_name = "לפי שם" - override val by_color = "לפי צבע" - override val by_score = "לפי ציון" - override val download = "הורדה" - override val export = "ייצוא" -} diff --git a/core/src/main/common/org/isoron/uhabits/i18n/StringsHindi.kt b/core/src/main/common/org/isoron/uhabits/i18n/StringsHindi.kt deleted file mode 100644 index fbebd9dd1..000000000 --- a/core/src/main/common/org/isoron/uhabits/i18n/StringsHindi.kt +++ /dev/null @@ -1,156 +0,0 @@ -// -------------------------------------------------------------------------- -// THIS FILE WAS AUTOMATICALLY GENERATED -// -// Please do not submit pull request to modify it. Corrections to translations -// may be submitted at https://translate.loophabits.org/ -// -------------------------------------------------------------------------- - -package org.isoron.uhabits.i18n - -class StringsHindi : Strings() { - override val app_name = "Loop आदत पर नजर" - override val main_activity_title = "आदतें" - override val action_settings = "सेटिंग्स" - override val edit = "संपादन" - override val delete = "मिटा देना" - override val archive = "संग्रह " - override val unarchive = "असंगृहीत करें" - override val add_habit = "आदत जोड़े" - override val color_picker_default_title = "रंग बदलें" - override val toast_habit_created = "आदत बनाए गए" - override val toast_habit_deleted = "आदत हटाया गया" - override val toast_habit_restored = "आदत फिर से चालू किया गया" - override val toast_nothing_to_undo = "कुछ भी नहीं पूर्ववत करने के लिए" - override val toast_nothing_to_redo = "कुछ भी नही फिर से करने के लिए" - override val toast_habit_changed = "आदत मे बदलाव" - override val toast_habit_changed_back = "आदत बहाल" - override val toast_habit_archived = "आदत संग्रहीत" - override val toast_habit_unarchived = "आदत को संग्रह से निकाला गया" - override val overview = "अवलोकन" - override val habit_strength = "आदत की ताक़त" - override val history = "इतिहास" - override val clear = "साफ़" - override val description_hint = "सवाल (क्या आज .......किया?)" - override val repeat = "दोहराए" - override val times_every = "बार" - override val days = "दिन" - override val reminder = "अनुस्मारक" - override val discard = "हटाना" - override val save = "सुरक्षित " - override val streaks = "लहर" - override val no_habits_found = "आपकी कोई सक्रिय आदत नही है" - override val long_press_to_toggle = "चेक या अनचेक करने के लिए दबाएँ व दबाएँ रखें " - override val reminder_off = "बंद" - override val validation_name_should_not_be_blank = "नाम को खाली नही छोड़ सकते" - override val validation_number_should_be_positive = "नंबर सकारात्मक डालें" - override val validation_at_most_one_rep_per_day = "आप एक दिन मे अधिक से अधिक एक पुनरावृत्ति हो सकती है" - override val create_habit = "आदत उत्पन्न करें" - override val edit_habit = "आदत संपादित करें" - override val check = "चेक" - override val snooze = "बाद में" - override val intro_title_1 = "स्वागत हे" - override val intro_description_1 = "लूप हैबिट ट्रैकर नई और अच्छी आदतों को बनाए रखने मे लिए मदद करता है ।" - override val intro_title_2 = "कुछ नई अच्छी आदतें बनाएँ" - override val intro_description_2 = "हर दिन, अपनी आदत के प्रदर्शन के बाद , अप्प पर एक सही का निशान डालें" - override val intro_title_3 = "इसे करते रहें" - override val intro_description_3 = "एक लंबे समय के लिए लगातार प्रदर्शन की आदतों से पूर्ण स्टार अर्जित करेंगे।" - override val intro_title_4 = "अपनी प्रगति को ट्रैक करें" - override val intro_description_4 = "विस्तृत रेखांकन आपको बताएंगे कि कैसे अपनी आदतों में समय के साथ सुधार करें" - override val interval_15_minutes = "15 मिनिट" - override val interval_30_minutes = "30 मिनिट" - override val interval_1_hour = "1 घंटा" - override val interval_2_hour = "2 घंटा" - override val interval_4_hour = "4 घंटा" - override val interval_8_hour = "8 घंटा" - override val interval_24_hour = "24 घंटे" - override val pref_toggle_title = "टॉगल पुनरावृत्ति हल्का दबाने से" - override val pref_toggle_description = "अधिक सुविधाजनक है, लेकिन आकस्मिक टॉगल हो सकता है ।" - override val pref_snooze_interval_title = "रिमाइंडर मे स्नूज़ अंतराल" - override val pref_rate_this_app = "गूगले प्ले पर इस ऐप्लिकेशन को रेट करें" - override val pref_send_feedback = "डेवेलपर को प्रतिक्रिया भेजें " - override val pref_view_source_code = "Github मे सोर्स कोड देखें" - override val pref_view_app_introduction = "अप्प्प का परिचय देखें" - override val links = "लिंक" - override val behavior = "व्यवहार" - override val name = "नाम" - override val settings = "सेटिंग्स" - override val snooze_interval = "झपकी का अंतराल" - override val hint_title = "क्या आप जानते .?" - override val hint_drag = "प्रविष्टियों को पुनर्व्यवस्थित करने के लिए, आदत के नाम पर प्रेस करें और सही जगह पर खींचें।" - override val hint_landscape = " अपने फोन को लांडसकपे मोड मे रख कर आप अधिक दिनों से देख सकते हैं" - override val delete_habits = "आदत हटाएँ" - override val delete_habits_message = "आदतों को स्थायी रूप से हटा दिया जाएगा। इस क्रिया को पूर्ववत नहीं किया जा सकता है।" - override val weekends = "सप्ताहांत" - override val any_weekday = "सोमवार से शुक्रवार" - override val any_day = "सप्ताह का कोई भी दिन" - override val select_weekdays = "दिन चुनें" - override val export_to_csv = "CSV में निर्यात करें" - override val done_label = "पूर्ण" - override val clear_label = "साफ़" - override val select_hours = "घंटे चुनें" - override val select_minutes = "मिनट चुनें" - override val about = "बारे में" - override val translators = "अनुवादक" - override val developers = "डिवेलपर" - override val version_n = "वर्ज़न %s" - override val frequency = "आवृत्ति" - override val checkmark = "सही का चिह्न" - override val strength = "ताक़त" - override val best_streaks = "बेस्ट स्ट्रीक्स" - override val current_streaks = "वर्तमान स्ट्रीक्स" - override val number_of_repetitions = "repetitions की संख्या" - override val last_x_days = "अंतिम %d दिवस" - override val last_x_weeks = "पिछले %d सप्ताह" - override val last_x_months = "पिछले %d माह" - override val last_x_years = "पिछले %d साल" - override val all_time = "पूरा समय" - override val every_day = "हर दिन" - override val every_week = "प्रति सप्ताह" - override val two_times_per_week = "प्रति सप्ताह 2 बार" - override val five_times_per_week = "प्रति सप्ताह 5 बार" - override val custom_frequency = "अन्य" - override val help = "मदद और बार-बार सवाल पूछने वाले सवाल" - override val could_not_export = "डेटा निर्यात करने में विफल" - override val could_not_import = "डेटा आयात करने में विफल रहा है" - override val file_not_recognized = "फाइल की पहचान नही " - override val habits_imported = "आदतों को सफलतापूर्वक आयात" - override val full_backup_success = "पूर्ण बैकअप सफलतापूर्वक निर्यात किया।" - override val import_data = "डेटा आयात" - override val export_full_backup = "निर्यात पूर्ण बैकअप" - override val import_data_summary = "इस एप्लिकेशन के द्वारा निर्यात पूर्ण बैकअप को सपोर्ट करता है , साथ ही फाइलों टिक्कमते , हबिठबुल्ल या रिवाइयर द्वारा उत्पन्न फाइल्स को सपोर्ट करता है। अधिक जानकारी के लिए सामान्य प्रश्न देखें।" - override val export_as_csv_summary = "ऐसी फाइल्स उत्पन्न करता है जो स्प्रेडशीट सॉफ़्टवरेस जैसे Microsoft Excel, OpenOffice Calc मे खुल सकती है. इस फ़ाइल में वापस आयात नहीं किया जा सकता है।" - override val export_full_backup_summary = "ऐसी फाइल्स उत्पन्न करता है जिसमे आपका सारा डेटा रहता है इस फ़ाइल को वापस आयात किया जा सकता है।" - override val bug_report_failed = "बग रिपोर्ट जनरेट करने मे असफल" - override val generate_bug_report = "बग रिपोर्ट जनरेट करें" - override val troubleshooting = "समस्या निवारण" - override val help_translate = "इस एप्लिकेशन का अनुवाद करने में मदद करें" - override val night_mode = "नाइट मोड" - override val use_pure_black = "नाइट मोड मे पूरा काला यूज़ करें" - override val pure_black_description = "रात मोड में शुद्ध काले रंग के साथ ग्रे पृष्ठभूमि में बदलें. अमोलेड प्रदर्शन के साथ फोन में बैटरी उपयोग कम कर देता है ।" - override val interface_preferences = "इंटरफेस" - override val reverse_days = "दिनों की रिवर्स आदेश" - override val reverse_days_description = "दिनों को रिवर्स क्रम में मुख्य स्क्रीन पर दिखाएँ" - override val day = "दिन " - override val week = "हफ्ते" - override val month = "माह" - override val quarter = "तिमाही" - override val year = "साल" - override val time_every = "समय में" - override val every_x_days = "हर %d दिन" - override val every_x_weeks = "हर %d हफ्ते" - override val every_x_months = "हर %d महीने" - override val score = "स्कोर" - override val reminder_sound = "अनुस्मारक ध्वनि" - override val none = "कोई आवाज नहीं" - override val filter = "फिल्टर" - override val repair_database = "डेटाबेस को रिपेयर करें" - override val database_repaired = "डेटाबेस रिपेयर सफल" - override val habit = "आदत" - override val sort = "सॉर्ट करें" - override val manually = "मैन्यूअली" - override val by_name = "नाम द्वारा" - override val by_color = "रंग द्वारा" - override val by_score = "स्कोर से" - override val download = "डाउनलोड" - override val export = "एक्सपोर्ट करे" -} diff --git a/core/src/main/common/org/isoron/uhabits/i18n/StringsHungarian.kt b/core/src/main/common/org/isoron/uhabits/i18n/StringsHungarian.kt deleted file mode 100644 index d39fe1684..000000000 --- a/core/src/main/common/org/isoron/uhabits/i18n/StringsHungarian.kt +++ /dev/null @@ -1,165 +0,0 @@ -// -------------------------------------------------------------------------- -// THIS FILE WAS AUTOMATICALLY GENERATED -// -// Please do not submit pull request to modify it. Corrections to translations -// may be submitted at https://translate.loophabits.org/ -// -------------------------------------------------------------------------- - -package org.isoron.uhabits.i18n - -class StringsHungarian : Strings() { - override val app_name = "Loop Szokásrögzítő" - override val main_activity_title = "Szokások" - override val action_settings = "Beállítások" - override val edit = "Szerkesztés" - override val delete = "Törlés" - override val archive = "Archiválás" - override val unarchive = "Újraaktiválás" - override val add_habit = "Új szokás" - override val color_picker_default_title = "Szín módosítása" - override val toast_habit_created = "Szokás létrehozva" - override val toast_habit_deleted = "Szokás törölve" - override val toast_habit_restored = "Szokás visszaállítva" - override val toast_nothing_to_undo = "Nincs mit visszavonni" - override val toast_nothing_to_redo = "Nincs mit újraalkalmazni" - override val toast_habit_changed = "Szokás módosítva" - override val toast_habit_changed_back = "Szokás visszaállítva" - override val toast_habit_archived = "Szokás archiválva" - override val toast_habit_unarchived = "Szokás újraaktiválva" - override val overview = "Áttekintés" - override val habit_strength = "Szokás erőssége" - override val history = "Napló" - override val clear = "Törlés" - override val description_hint = "Kérdés (Sikerült ma…?)" - override val repeat = "Ismétlődés" - override val times_every = "alk. /" - override val days = "nap" - override val reminder = "Emlékeztető" - override val discard = "Elvetés" - override val save = "Mentés" - override val streaks = "Szériák" - override val no_habits_found = "Nincs aktív szokásod" - override val long_press_to_toggle = "Tartsd lenyomva a bejelöléshez, vagy a jelölés törléséhez" - override val reminder_off = "Kikapcsolva" - override val validation_name_should_not_be_blank = "A megnevezés nem maradhat üresen." - override val validation_number_should_be_positive = "A számnak pozitívnak kell lennie." - override val validation_at_most_one_rep_per_day = "Maximum napi 1 ismétlés lehetséges" - override val create_habit = "Szokás rögzítése" - override val edit_habit = "Szokás szerkesztése" - override val check = "Kipipálva" - override val snooze = "Később" - override val intro_title_1 = "Üdv!" - override val intro_description_1 = "A Loop Habit Tracker segít a jó szokások kialakításában és azok fenntartásában" - override val intro_title_2 = "Hozz létre néhány új szokást" - override val intro_description_2 = "Minden nap jelöld pipával az alkalmazásban, ahogy elvégeztél egy jó szokást." - override val intro_title_3 = "Ne hagyd abba" - override val intro_description_3 = "A hosszú időn keresztül folyamatosan fenntartott jó szokásokért teljes csillag jár." - override val intro_title_4 = "Kövesd a fejlődésed" - override val intro_description_4 = "A szokások fejlődésének időbeni alakulását részletes grafikonok mutatják." - override val interval_15_minutes = "15 perc" - override val interval_30_minutes = "30 perc" - override val interval_1_hour = "1 óra" - override val interval_2_hour = "2 óra" - override val interval_4_hour = "4 óra" - override val interval_8_hour = "8 óra" - override val interval_24_hour = "24 óra" - override val pref_toggle_title = "Bejelölés rövid koppintással" - override val pref_toggle_description = "Bejelölés koppintással nyomva tartás helyett. Kényelmesebb, de véletlen bejelöléseket okozhat." - override val pref_snooze_interval_title = "Szundi időtartama emlékeztetőnél" - override val pref_rate_this_app = "Értékeld az alkalmazást a Google Play-en" - override val pref_send_feedback = "Visszajelzés küldése a fejlesztőnek" - override val pref_view_source_code = "Forráskód megtekintése a GitHub-on" - override val pref_view_app_introduction = "Bemutató megtekintése" - override val links = "Linkek" - override val behavior = "Szokás" - override val name = "Megnevezés" - override val settings = "Beállítások" - override val snooze_interval = "Szundi időtartama" - override val hint_title = "Tudtad?" - override val hint_drag = "Az elemek újrarendezéséhez a koppints a szokás nevére, majd húzd a megfelelő helyre." - override val hint_landscape = "Több nap válik láthatóvá, ha fekvő módba állítod a telefonod kijelzőjét." - override val delete_habits = "Szokások törlése" - override val delete_habits_message = "A szokások véglegesen törölve lesznek. A műveletet nem lehet visszavonni." - override val habit_not_found = "Szokás törölve / nem található" - override val weekends = "Hétvégente" - override val any_weekday = "Hétfőtől péntekig" - override val any_day = "A hét bármely napján" - override val select_weekdays = "Napok kiválasztása" - override val export_to_csv = "Exportálás CSV-ként" - override val done_label = "Kész" - override val clear_label = "Törlés" - override val select_hours = "Óra kiválasztása" - override val select_minutes = "Perc kiválasztása" - override val about = "Névjegy" - override val translators = "Fordítók" - override val developers = "Fejlesztők" - override val version_n = "Verzió %s" - override val frequency = "Gyakoriság" - override val checkmark = "Pipa" - override val strength = "Erősség" - override val best_streaks = "Legjobb széria" - override val current_streaks = "Jelenlegi széria" - override val number_of_repetitions = "Ismétlődések száma" - override val last_x_days = "Utolsó %d nap" - override val last_x_weeks = "Utolsó %d hét" - override val last_x_months = "Utolsó %d hónap" - override val last_x_years = "Utolsó %d év" - override val all_time = "Mindig" - override val every_day = "Minden nap" - override val every_week = "Minden héten" - override val two_times_per_week = "Heti 2-szer" - override val five_times_per_week = "Hetente 5-ször" - override val custom_frequency = "Egyéni…" - override val help = "Súgó és GYIK" - override val could_not_export = "Nem sikerült az adatok exportálása." - override val could_not_import = "Nem sikerült az adatok importálása" - override val file_not_recognized = "A fájlt nem sikerült felismerni." - override val habits_imported = "A szokások importálása sikerült." - override val full_backup_success = "A teljes mentés sikeresen exportálva lett." - override val import_data = "Adat importálása" - override val export_full_backup = "Teljes mentés exportálása" - override val import_data_summary = "Támogatja a Loop Habit Tracker alkalmazás teljes mentéseit, illetve a Tickmate, HabitBull és Rewire alkalmazások formátumait is. További információt a GYIK-ben találsz." - override val export_as_csv_summary = "Olyan fájlokat generál, amit táblázatkezelőkkel lehet megnyitni (pl. Microsoft Excel-lel vagy OpenOffice Calc-kal). Ezt a fájlt nem lehet visszaimportálni." - override val export_full_backup_summary = "Olyan fájlt generál, amely tartalmazza minden adatodat. Ezt a fájlt vissza lehet importálni." - override val bug_report_failed = "Nem sikerült a hibajelentés generálása" - override val generate_bug_report = "Hibabejelentés generálása" - override val troubleshooting = "Hibaelhárítás" - override val help_translate = "Segíts lefordítani ezt az alkalmazást" - override val night_mode = "Éjszakai mód" - override val use_pure_black = "Fekete használata éjszakai módban" - override val pure_black_description = "A szürke hátteret tiszta feketére cseréli éjszakai módban. Csökkenti az energiafelhasználást AMOLED kijelzős telefonokon." - override val interface_preferences = "Kezelőfelület" - override val reverse_days = "Napok sorrendjének megfordítása" - override val reverse_days_description = "A főképernyőn fordított sorrendben mutatja a napokat" - override val day = "Nap" - override val week = "Hét" - override val month = "Hónap" - override val quarter = "Negyedév" - override val year = "Év" - override val total = "Összesen" - override val time_every = "alk. /" - override val every_x_days = "%d naponta" - override val every_x_weeks = "%d hetente" - override val every_x_months = "%d havonta" - override val score = "Pont" - override val reminder_sound = "Emlékeztető dallama" - override val none = "Nem ismétlődik" - override val filter = "Szűrő" - override val hide_completed = "Elvégzettek elrejtése" - override val hide_archived = "Archiváltak elrejtése" - override val sticky_notifications = "Az értesítések legyenek ragadósak" - override val sticky_notifications_description = "Megakadályozza az értesítések eltávolítását" - override val repair_database = "Adatbázis javítása" - override val database_repaired = "Adatbázis javítása kész." - override val uncheck = "Pipa kivétele" - override val toggle = "Ki/bekapcsolás" - override val action = "Művelet" - override val habit = "Szokás" - override val sort = "Rendezés" - override val manually = "Manuálisan" - override val by_name = "Megnevezés szerint" - override val by_color = "Színek szerint" - override val by_score = "Pont szerint" - override val download = "Letöltés" - override val export = "Exportálás" -} diff --git a/core/src/main/common/org/isoron/uhabits/i18n/StringsIndonesian.kt b/core/src/main/common/org/isoron/uhabits/i18n/StringsIndonesian.kt deleted file mode 100644 index 2f13f49de..000000000 --- a/core/src/main/common/org/isoron/uhabits/i18n/StringsIndonesian.kt +++ /dev/null @@ -1,165 +0,0 @@ -// -------------------------------------------------------------------------- -// THIS FILE WAS AUTOMATICALLY GENERATED -// -// Please do not submit pull request to modify it. Corrections to translations -// may be submitted at https://translate.loophabits.org/ -// -------------------------------------------------------------------------- - -package org.isoron.uhabits.i18n - -class StringsIndonesian : Strings() { - override val app_name = "Loop Habit Tracker" - override val main_activity_title = "Kebiasaan" - override val action_settings = "Pengaturan" - override val edit = "Sunting" - override val delete = "Hapus" - override val archive = "Arsip" - override val unarchive = "Keluarkan dari arsip" - override val add_habit = "Tambah Kebiasaan" - override val color_picker_default_title = "Ganti warna" - override val toast_habit_created = "Kebiasaan ditambahkan." - override val toast_habit_deleted = "Kebiasaan dihapus." - override val toast_habit_restored = "Kebiasaan dipulihkan" - override val toast_nothing_to_undo = "Tidak ada aksi sebelumnya." - override val toast_nothing_to_redo = "Tidak ada aksi sesudahnya." - override val toast_habit_changed = "Kebiasaan diubah." - override val toast_habit_changed_back = "Kebiasaan telah dikembalikan." - override val toast_habit_archived = "Kebiasaan diarsipkan." - override val toast_habit_unarchived = "Kebiasaan dikeluarkan dari arsip." - override val overview = "Ikhtisar" - override val habit_strength = "Kekuatan Kebiasaan" - override val history = "Riwayat" - override val clear = "Bersihkan" - override val description_hint = "Pertanyaan (Sudahkah Anda ... hari ini?)" - override val repeat = "Ulangi" - override val times_every = "kali dalam" - override val days = "hari" - override val reminder = "Pengingat" - override val discard = "Batalkan" - override val save = "Simpan" - override val streaks = "Rentetan" - override val no_habits_found = "Anda tidak memiliki Kebiasaan yang aktif" - override val long_press_to_toggle = "Tekan dan tahan untuk menambah atau menghapus centang" - override val reminder_off = "Mati" - override val validation_name_should_not_be_blank = "Nama tidak boleh kosong." - override val validation_number_should_be_positive = "Angka harus positif." - override val validation_at_most_one_rep_per_day = "Maksimal satu kali pengulangan dalam satu hari" - override val create_habit = "Buat Kebiasaan" - override val edit_habit = "Sunting Kebiasaan" - override val check = "Tanda cek" - override val snooze = "Tunda" - override val intro_title_1 = "Selamat datang" - override val intro_description_1 = "Loop Habit Tracker membantu mencatat dan mengelola Kebiasaan baik Anda." - override val intro_title_2 = "Buat beberapa Kebiasaan baru" - override val intro_description_2 = "Berikan tanda cek setiap kali Anda selesai melakukannya." - override val intro_title_3 = "Terus lakukan" - override val intro_description_3 = "Kebiasaan yang dilakukan secara konsisten dalam jangka waktu panjang akan mendapatkan tanda bintang penuh." - override val intro_title_4 = "Lacak perkembangan Anda" - override val intro_description_4 = "Grafik terperinci menampilkan perkembangan Kebiasaanmu dari waktu ke waktu." - override val interval_15_minutes = "15 menit" - override val interval_30_minutes = "30 menit" - override val interval_1_hour = "1 jam" - override val interval_2_hour = "2 jam" - override val interval_4_hour = "4 jam" - override val interval_8_hour = "8 jam" - override val interval_24_hour = "24 jam" - override val pref_toggle_title = "Tandai dengan cepat." - override val pref_toggle_description = "Beri tanda cek dengan sekali ketuk bukan tekan-dan-tahan. Lebih nyaman namun memungkinkan kesalahan." - override val pref_snooze_interval_title = "Durasi tunda sejenak pada pengingat" - override val pref_rate_this_app = "Berikan rating aplikasi ini di Google Play" - override val pref_send_feedback = "Kirimkan umpan balik kepada Developer" - override val pref_view_source_code = "Lihat kode aplikasi di GitHub" - override val pref_view_app_introduction = "Tampilkan perkenalan aplikasi" - override val links = "Tautan" - override val behavior = "Kebiasaan" - override val name = "Nama" - override val settings = "Pengaturan" - override val snooze_interval = "Durasi tunda sejenak" - override val hint_title = "Sudahkah Anda tahu?" - override val hint_drag = "Untuk mengatur urutan, tekan dan tahan judul Kebiasaan lalu tempatkan pada posisi yang Anda inginkan." - override val hint_landscape = "Anda dapat melihat tampilan hari dengan merubah posisi menjadi mode landscape." - override val delete_habits = "Hapus Kebiasaan" - override val delete_habits_message = "Kebiasaan ini akan dihapus secara permanen. Tindakan ini tidak dapat dibatalkan." - override val habit_not_found = "Kebiasaan telah dihapus / tidak ditemukan" - override val weekends = "Akhir pekan" - override val any_weekday = "Senin - Jumat" - override val any_day = "Seluruh hari dalam satu minggu" - override val select_weekdays = "Pilih hari" - override val export_to_csv = "Ekspor (CSV)" - override val done_label = "Selesai" - override val clear_label = "Hapus" - override val select_hours = "Pilih jam" - override val select_minutes = "Pilih menit" - override val about = "Tentang" - override val translators = "Penerjemah" - override val developers = "Developer" - override val version_n = "Versi %s" - override val frequency = "Frekuensi" - override val checkmark = "Cek" - override val strength = "Kekuatan" - override val best_streaks = "Rentetan terbaik" - override val current_streaks = "Rentetan saat ini" - override val number_of_repetitions = "Jumlah pengulangan" - override val last_x_days = "%d hari terakhir" - override val last_x_weeks = "%d minggu terakhir" - override val last_x_months = "%d bulan terakhir" - override val last_x_years = "%d tahun terakhir" - override val all_time = "Seluruh waktu" - override val every_day = "Setiap hari" - override val every_week = "Setiap minggu" - override val two_times_per_week = "2 kali per minggu" - override val five_times_per_week = "5 kali per minggu" - override val custom_frequency = "Sesuaikan …" - override val help = "Bantuan & FAQ" - override val could_not_export = "Gagal mengekspor data." - override val could_not_import = "Gagal mengimpor data." - override val file_not_recognized = "File tidak dikenali." - override val habits_imported = "Impor data berhasil." - override val full_backup_success = "Seluruh data berhasil di-ekpor." - override val import_data = "Impor data" - override val export_full_backup = "Ekspor keseluruhan data" - override val import_data_summary = "Mendukung ekspor data dan berkas dari aplikasi Tickmate, HabitBull atau Rewire. Lihat FAQ untuk informasi lebih lanjut." - override val export_as_csv_summary = "Menghasilkan lembar kerja yang dapat dibuka menggunakan aplikasi seperti Microsoft Excel atau OpenOffice Calc. Berkas ini tidak dapat di-impor kembali." - override val export_full_backup_summary = "Menghasilkan berkas yang berisikan seluruh data. Berkas ini dapat di-impor kembali." - override val bug_report_failed = "Gagal membuat laporan masalah." - override val generate_bug_report = "Membuat laporan masalah" - override val troubleshooting = "Penyelesaian masalah" - override val help_translate = "Bantu menerjemahkan aplikasi ini" - override val night_mode = "Mode malam" - override val use_pure_black = "Gunakan warna hitam pada mode malam" - override val pure_black_description = "Ganti warna latar abu-abu dengan warna hitam pada mode malam. Mengurangi penggunaan baterai pada layar AMOLED." - override val interface_preferences = "Antar muka" - override val reverse_days = "Ubah urutan hari" - override val reverse_days_description = "Tampilkan hari dalam urutan terbalik pada layar utama" - override val day = "Hari" - override val week = "Minggu" - override val month = "Bulan" - override val quarter = "Kuartal" - override val year = "Tahun" - override val total = "Total" - override val time_every = "kali dalam" - override val every_x_days = "Setiap %d hari" - override val every_x_weeks = "Setiap %d minggu" - override val every_x_months = "Setiap %d bulan" - override val score = "Skor" - override val reminder_sound = "Suara pengingat" - override val none = "Hening" - override val filter = "Saring" - override val hide_completed = "Sembunyikan yang selesai" - override val hide_archived = "Sembunyikan arsip" - override val sticky_notifications = "Jadikan notifikasi lengket" - override val sticky_notifications_description = "Cegah pemberitahuan dari sapuan." - override val repair_database = "Perbaiki Basis Data" - override val database_repaired = "Basis Data diperbaiki." - override val uncheck = "Hapus centang" - override val toggle = "Alih" - override val action = "Tindakan" - override val habit = "Kebiasaan" - override val sort = "Urutkan" - override val manually = "Secara manual" - override val by_name = "Berdasarkan nama" - override val by_color = "Berdasarkan Warna" - override val by_score = "Berdasarkan Skor" - override val download = "Unduh" - override val export = "Ekspor" -} diff --git a/core/src/main/common/org/isoron/uhabits/i18n/StringsItalian.kt b/core/src/main/common/org/isoron/uhabits/i18n/StringsItalian.kt deleted file mode 100644 index 879b88316..000000000 --- a/core/src/main/common/org/isoron/uhabits/i18n/StringsItalian.kt +++ /dev/null @@ -1,165 +0,0 @@ -// -------------------------------------------------------------------------- -// THIS FILE WAS AUTOMATICALLY GENERATED -// -// Please do not submit pull request to modify it. Corrections to translations -// may be submitted at https://translate.loophabits.org/ -// -------------------------------------------------------------------------- - -package org.isoron.uhabits.i18n - -class StringsItalian : Strings() { - override val app_name = "Loop" - override val main_activity_title = "Abitudini" - override val action_settings = "Impostazioni" - override val edit = "Modifica" - override val delete = "Elimina" - override val archive = "Archivia" - override val unarchive = "Ripristina" - override val add_habit = "Aggiungi abitudine" - override val color_picker_default_title = "Cambia colore" - override val toast_habit_created = "Abitudine creata" - override val toast_habit_deleted = "Abitudine rimossa" - override val toast_habit_restored = "Abitudine ripristinata" - override val toast_nothing_to_undo = "Niente da annullare" - override val toast_nothing_to_redo = "Niente da ripetere" - override val toast_habit_changed = "Abitudine modificata" - override val toast_habit_changed_back = "Abitudine ripristinata" - override val toast_habit_archived = "Abitudine archiviata" - override val toast_habit_unarchived = "Abitudine ripristinata" - override val overview = "Panoramica" - override val habit_strength = "Forza dell\'abitudine" - override val history = "Cronologia" - override val clear = "Annulla" - override val description_hint = "Domanda (Hai ... oggi?)" - override val repeat = "Ripetizione" - override val times_every = "volte in" - override val days = "giorni" - override val reminder = "Promemoria" - override val discard = "Annulla" - override val save = "Salva" - override val streaks = "Serie" - override val no_habits_found = "Non hai abitudini attive" - override val long_press_to_toggle = "Premi e mantieni premuto per completare o annullare" - override val reminder_off = "Disabilitato" - override val validation_name_should_not_be_blank = "Il nome non può essere vuoto." - override val validation_number_should_be_positive = "I numeri devono essere positivi." - override val validation_at_most_one_rep_per_day = "Puoi avere al massimo una ripetizione al giorno" - override val create_habit = "Crea abitudine" - override val edit_habit = "Modifica abitudine" - override val check = "Completa" - override val snooze = "Più tardi" - override val intro_title_1 = "Benvenuto" - override val intro_description_1 = "Loop Habit Tracker ti aiuta a creare e mantenere delle buone abitudini." - override val intro_title_2 = "Aggiungi qualche nuova abitudine" - override val intro_description_2 = "Ogni giorno, dopo aver portato a termine la tua abitudine, spuntala nell\'app." - override val intro_title_3 = "Continua così" - override val intro_description_3 = "Le abitudini portate a termine regoalrmente per un lungo periodo riceveranno una stella piena." - override val intro_title_4 = "Segui i tuoi progressi" - override val intro_description_4 = "Grafici dettagliati ti mostrano come le tue abitudini sono migliorate nel corso del tempo." - override val interval_15_minutes = "15 minuti" - override val interval_30_minutes = "30 minuti" - override val interval_1_hour = "1 ora" - override val interval_2_hour = "2 ore" - override val interval_4_hour = "4 ore" - override val interval_8_hour = "8 ore" - override val interval_24_hour = "24 ore" - override val pref_toggle_title = "Spunta le ripetizioni velocemente" - override val pref_toggle_description = "Metti le spunte con un tocco singolo invece che tenendo premuto. Più comodo, ma potrebbe causare delle spunte accidentali." - override val pref_snooze_interval_title = "Intervallo di ritardo dei promemoria" - override val pref_rate_this_app = "Valuta quest\'app su Google Play" - override val pref_send_feedback = "Manda un feedback allo sviluppatore" - override val pref_view_source_code = "Vedi il codice sorgente su GitHub" - override val pref_view_app_introduction = "Visualizza l\'introduzione dell\'app" - override val links = "Links" - override val behavior = "Comportamento" - override val name = "Nome" - override val settings = "Impostazioni" - override val snooze_interval = "Snooze" - override val hint_title = "Lo sapevi?" - override val hint_drag = "Per riordinare le voci, tieni premuto sul nome dell\'abitudine, poi spostala nella posizione corretta." - override val hint_landscape = "Puoi vedere più giorni mettendo il tuo telefono orizzontale." - override val delete_habits = "Elimina abitudine" - override val delete_habits_message = "L\'abitudine verrà cancellata definitivamente. Non sarà possibile annullare." - override val habit_not_found = "Abitudine cancellata / non trovata" - override val weekends = "Weekend" - override val any_weekday = "Giorni feriali" - override val any_day = "Ogni giorno della settimana" - override val select_weekdays = "Giorni selezionati" - override val export_to_csv = "Esporta i dati come CSV" - override val done_label = "Fatto" - override val clear_label = "Annulla" - override val select_hours = "Ore selezionate" - override val select_minutes = "Minuti selezionati" - override val about = "Su Loop" - override val translators = "Traduttori" - override val developers = "Sviluppatori" - override val version_n = "Versione %s" - override val frequency = "Frequenza" - override val checkmark = "Spunta" - override val strength = "Forza" - override val best_streaks = "Serie migliori" - override val current_streaks = "Serie corrente" - override val number_of_repetitions = "Numero di ripetizioni" - override val last_x_days = "Ultimi %d giorni" - override val last_x_weeks = "Ultime %d settimane" - override val last_x_months = "Ultimi %d mesi" - override val last_x_years = "Ultimi %d anni" - override val all_time = "Sempre" - override val every_day = "Ogni giorno" - override val every_week = "Ogni settimana" - override val two_times_per_week = "2 volte a settimana" - override val five_times_per_week = "5 volte a settimana" - override val custom_frequency = "Personalizzato ..." - override val help = "Aiuto & FAQ" - override val could_not_export = "Esportazione non riuscita." - override val could_not_import = "Importazione non riuscita." - override val file_not_recognized = "File non riconosciuto." - override val habits_imported = "Abitudini importate con successo." - override val full_backup_success = "Backup completo esportato con successo." - override val import_data = "Importa dati" - override val export_full_backup = "Esporta il backup completo" - override val import_data_summary = "Pieno supporto ai backup esportati da questa app, oltre a quelli generati da Tickmate, HabitBull o Rewire. Vedi le FAQ per maggiori informazioni." - override val export_as_csv_summary = "Genera un file che potrà essere aperto da programmi come Microsoft Excel o OpenOffice Calc. Non potrà essere importato." - override val export_full_backup_summary = "Genera un file contenente tutti i tuoi dati. Potrà essere importato successivamente." - override val bug_report_failed = "Generazione del bug report fallita" - override val generate_bug_report = "Genera bug report" - override val troubleshooting = "Risoluzione dei problemi" - override val help_translate = "Aiuta a tradurre questa app" - override val night_mode = "Modalità notte" - override val use_pure_black = "Usa nero puro nella modalità notte" - override val pure_black_description = "Sostituisce gli sfondi grigi con sfondi neri nella modalità notte. Riduce il consumo di batteria nei dispositivi con schermo AMOLED." - override val interface_preferences = "Interfaccia" - override val reverse_days = "Inverti ordine giorni" - override val reverse_days_description = "Mostra i giorni in ordine inverso nella schermata principale" - override val day = "Giorno" - override val week = "Settimana" - override val month = "Mese" - override val quarter = "Quadrimestre" - override val year = "Anno" - override val total = "Totale" - override val time_every = "volta in" - override val every_x_days = "Ogni %d giorni" - override val every_x_weeks = "Ogni %d settimane" - override val every_x_months = "Ogni %d mesi" - override val score = "Punteggio" - override val reminder_sound = "Suono notifica" - override val none = "Nessuno" - override val filter = "Filtra" - override val hide_completed = "Nascondi completati" - override val hide_archived = "Nascondi archiviati" - override val sticky_notifications = "Notifiche non rimuovibili" - override val sticky_notifications_description = "Impedisce di poter rimuovere le notifiche." - override val repair_database = "Ripara database" - override val database_repaired = "Database recuperato." - override val uncheck = "Deseleziona" - override val toggle = "Attiva/disattiva" - override val action = "Azione" - override val habit = "Abitudine" - override val sort = "Ordina" - override val manually = "Manualmente" - override val by_name = "Per nome" - override val by_color = "Per colore" - override val by_score = "Per punteggio" - override val download = "Download" - override val export = "Esporta" -} diff --git a/core/src/main/common/org/isoron/uhabits/i18n/StringsJapanese.kt b/core/src/main/common/org/isoron/uhabits/i18n/StringsJapanese.kt deleted file mode 100644 index e74021d8f..000000000 --- a/core/src/main/common/org/isoron/uhabits/i18n/StringsJapanese.kt +++ /dev/null @@ -1,149 +0,0 @@ -// -------------------------------------------------------------------------- -// THIS FILE WAS AUTOMATICALLY GENERATED -// -// Please do not submit pull request to modify it. Corrections to translations -// may be submitted at https://translate.loophabits.org/ -// -------------------------------------------------------------------------- - -package org.isoron.uhabits.i18n - -class StringsJapanese : Strings() { - override val app_name = "ループ習慣トラッカー" - override val main_activity_title = "習慣" - override val action_settings = "設定" - override val edit = "編集" - override val delete = "削除" - override val archive = "アーカイブ" - override val unarchive = "アーカイブを戻す" - override val add_habit = "習慣を追加" - override val color_picker_default_title = "色の変更" - override val toast_habit_created = "習慣を作成しました。" - override val toast_habit_deleted = "習慣を削除しました。" - override val toast_habit_restored = "習慣を復元しました。" - override val toast_nothing_to_undo = "元に戻すことはできません。" - override val toast_nothing_to_redo = "繰り返しはできません。" - override val toast_habit_changed = "習慣を変更しました。" - override val toast_habit_changed_back = "習慣を元に戻しました。" - override val toast_habit_archived = "習慣をアーカイブしました。" - override val toast_habit_unarchived = "習慣のアーカイブを戻しました。" - override val overview = "概要" - override val habit_strength = "習慣の強さ" - override val history = "履歴" - override val clear = "クリア" - override val description_hint = "質問 (今日 … しましたか?)" - override val repeat = "繰り返し" - override val times_every = "回" - override val days = "日" - override val reminder = "リマインダー" - override val discard = "破棄" - override val save = "保存" - override val streaks = "連続記録" - override val no_habits_found = "アクティブな習慣はありません" - override val long_press_to_toggle = "長押しするとチェックを付けたり外したりします" - override val reminder_off = "オフ" - override val validation_name_should_not_be_blank = "名前は空にできません。" - override val validation_number_should_be_positive = "正の数値にする必要があります。" - override val validation_at_most_one_rep_per_day = "多くとも 1 日 1 回にすることができます。" - override val create_habit = "習慣を作成" - override val edit_habit = "習慣を編集" - override val check = "チェック" - override val snooze = "後で" - override val intro_title_1 = "ようこそ" - override val intro_description_1 = "ループ習慣トラッカーは、良い習慣を作って、維持するのに役立ちます。" - override val intro_title_2 = "新しい習慣を作成します" - override val intro_description_2 = "毎日、習慣を実行した後、アプリでチェックマークを付けます。" - override val intro_title_3 = "これを続けます" - override val intro_description_3 = "長い期間習慣を継続すると、スターを全て獲得できます。" - override val intro_title_4 = "進捗状況を追跡します" - override val intro_description_4 = "詳細グラフは、あなたの習慣が時間をかけて改善された様子を示します。" - override val interval_15_minutes = "15 分" - override val interval_30_minutes = "30 分" - override val interval_1_hour = "1 時間" - override val interval_2_hour = "2 時間" - override val interval_4_hour = "4 時間" - override val interval_8_hour = "8 時間" - override val interval_24_hour = "24時間" - override val pref_toggle_title = "クリックで繰り返しを切り替え" - override val pref_toggle_description = "便利になりますが、間違って切り替えが起こる可能性があります。" - override val pref_snooze_interval_title = "リマインダーのスヌーズ間隔" - override val pref_rate_this_app = "Google Play でこのアプリを評価" - override val pref_send_feedback = "開発者にフィードバックを送信" - override val pref_view_source_code = "GitHub でソースコードを参照" - override val pref_view_app_introduction = "アプリの紹介を表示" - override val links = "リンク" - override val behavior = "動作" - override val name = "名前" - override val settings = "設定" - override val snooze_interval = "スヌーズ間隔" - override val hint_title = "ご存知ですか?" - override val hint_drag = "エントリーを並べ替えるには、習慣の名前を長押しして、正しい場所にドラッグしてください。" - override val hint_landscape = "お使いの携帯電話を横置きモードにすることで、参照する日数を多くすることができます。" - override val delete_habits = "習慣を削除" - override val delete_habits_message = "習慣は完全に削除されます。この操作を元に戻すことはできません。" - override val weekends = "週末" - override val any_weekday = "月曜日から金曜日" - override val any_day = "週の任意の日" - override val select_weekdays = "日の選択" - override val export_to_csv = "CSV としてエクスポート" - override val done_label = "完了" - override val clear_label = "クリア" - override val select_hours = "時間の選択" - override val select_minutes = "分の選択" - override val about = "アプリについて" - override val translators = "翻訳者" - override val developers = "開発者" - override val version_n = "バージョン %s" - override val frequency = "周波数" - override val checkmark = "チェック" - override val strength = "強さ" - override val best_streaks = "最高の連続記録" - override val current_streaks = "現在の連続記録" - override val number_of_repetitions = "繰り返し数" - override val last_x_days = "最近 %d 日" - override val last_x_weeks = "最近 %d 週間" - override val last_x_months = "最近 %d ヶ月" - override val last_x_years = "最近 %d 年" - override val all_time = "いつも" - override val every_day = "毎日" - override val every_week = "毎週" - override val two_times_per_week = "1 週間に 2 回" - override val five_times_per_week = "1 週間に 5 回" - override val custom_frequency = "カスタム …" - override val help = "ヘルプ & FAQ" - override val could_not_export = "データのエクスポートに失敗しました。" - override val could_not_import = "データのインポートに失敗しました。" - override val file_not_recognized = "ファイルを認識できません。" - override val habits_imported = "習慣を正常にインポートしました。" - override val full_backup_success = "フルバックアップを正常にエクスポートしました。" - override val import_data = "データのインポート" - override val export_full_backup = "フルバックアップのエクスポート" - override val import_data_summary = "このアプリでエクスポートしたフルバックアップだけではなく、Tickmate、HabitBull、Rewire で生成したファイルも同様にサポートしています。詳細については FAQ を参照してください。" - override val export_as_csv_summary = "Microsoft Excel や OpenOffice Calc などの表計算ソフトで開くことができるファイルを生成します。このファイルはインポートで戻すことはできません。" - override val export_full_backup_summary = "すべてのデータが含まれるファイルを生成します。このファイルはインポートして戻すことができます。" - override val bug_report_failed = "バグ報告の生成に失敗しました。" - override val generate_bug_report = "バグ報告の生成" - override val troubleshooting = "トラブルシューティング" - override val help_translate = "このアプリの翻訳を支援する" - override val night_mode = "夜間モード" - override val use_pure_black = "夜間モードで真黒を使用する" - override val pure_black_description = "夜間モードで灰色の背景を黒で置き換えます。AMOLED ディスプレイの電話でバッテリー使用量を抑えます。" - override val interface_preferences = "インターフェース" - override val reverse_days = "日の順序を逆転する" - override val reverse_days_description = "メイン画面で日を逆順に表示します" - override val day = "日" - override val week = "週" - override val month = "月" - override val quarter = "四半期" - override val year = "年" - override val total = "合計" - override val time_every = "回 /" - override val every_x_days = "%d 日ごと" - override val every_x_weeks = "%d 週ごと" - override val every_x_months = "%d ヶ月ごと" - override val score = "スコア" - override val reminder_sound = "リマインダー サウンド" - override val none = "なし" - override val filter = "フィルター" - override val download = "ダウンロード" - override val export = "エクスポート" -} diff --git a/core/src/main/common/org/isoron/uhabits/i18n/StringsKorean.kt b/core/src/main/common/org/isoron/uhabits/i18n/StringsKorean.kt deleted file mode 100644 index 53f55031f..000000000 --- a/core/src/main/common/org/isoron/uhabits/i18n/StringsKorean.kt +++ /dev/null @@ -1,165 +0,0 @@ -// -------------------------------------------------------------------------- -// THIS FILE WAS AUTOMATICALLY GENERATED -// -// Please do not submit pull request to modify it. Corrections to translations -// may be submitted at https://translate.loophabits.org/ -// -------------------------------------------------------------------------- - -package org.isoron.uhabits.i18n - -class StringsKorean : Strings() { - override val app_name = "Loop 습관제조기" - override val main_activity_title = "습관" - override val action_settings = "설정" - override val edit = "수정" - override val delete = "삭제" - override val archive = "보관" - override val unarchive = "보관 해제" - override val add_habit = "습관 추가하기" - override val color_picker_default_title = "색상 변경" - override val toast_habit_created = "습관이 생성되었습니다." - override val toast_habit_deleted = "습관이 삭제되었습니다." - override val toast_habit_restored = "습관이 복원되었습니다." - override val toast_nothing_to_undo = "취소할 것이 없습니다." - override val toast_nothing_to_redo = "복원할 것이 없습니다." - override val toast_habit_changed = "습관이 수정되었습니다." - override val toast_habit_changed_back = "습관이 복원되었습니다." - override val toast_habit_archived = "습관이 보관되었습니다." - override val toast_habit_unarchived = "습관 보관이 해제되었습니다." - override val overview = "개요" - override val habit_strength = "습관 강도" - override val history = "이력" - override val clear = "지우기" - override val description_hint = "질문 (오늘 ... 했나요?)" - override val repeat = "반복" - override val times_every = "번" - override val days = "일 동안" - override val reminder = "알림" - override val discard = "취소" - override val save = "저장" - override val streaks = "연속" - override val no_habits_found = "활성화된 습관이 없습니다." - override val long_press_to_toggle = "체크하거나 해제하려면 길게 누르세요." - override val reminder_off = "끔" - override val validation_name_should_not_be_blank = "제목을 적어주세요." - override val validation_number_should_be_positive = "숫자는 0보다 커야합니다." - override val validation_at_most_one_rep_per_day = "하루에 한 번만 반복 가능합니다." - override val create_habit = "습관 만들기" - override val edit_habit = "습관 수정하기" - override val check = "완료" - override val snooze = "나중에" - override val intro_title_1 = "환영합니다" - override val intro_description_1 = "Loop은 당신이 좋은 습관을 만들고 유지하도록 도와줍니다." - override val intro_title_2 = "새로운 습관을 만들어 보세요." - override val intro_description_2 = "매일 습관을 수행하고 앱에 기록하세요." - override val intro_title_3 = "계속 반복하세요" - override val intro_description_3 = "오랫동안 지속적으로 유지한 습관은 별표를 얻습니다." - override val intro_title_4 = "습관을 관리하세요" - override val intro_description_4 = "자세한 그래프로 시간에 따라 당신의 습관이 어떻게 향상되었는지 보여줍니다." - override val interval_15_minutes = "15분" - override val interval_30_minutes = "30분" - override val interval_1_hour = "1시간" - override val interval_2_hour = "2시간" - override val interval_4_hour = "4시간" - override val interval_8_hour = "8시간" - override val interval_24_hour = "24시간" - override val pref_toggle_title = "짧게 눌러서 전환하기" - override val pref_toggle_description = "길게 누르고 있는 대신에 짧은 탭 한 번으로 체크합니다. 더 편리하지만, 실수로 전환될 수도 있습니다." - override val pref_snooze_interval_title = "알림 스누즈 간격" - override val pref_rate_this_app = "Google Play에서 평가" - override val pref_send_feedback = "개발자에게 피드백 보내기" - override val pref_view_source_code = "Github에서 소스보기" - override val pref_view_app_introduction = "앱 안내메시지 보기" - override val links = "링크" - override val behavior = "행동" - override val name = "제목" - override val settings = "설정" - override val snooze_interval = "스누즈 간격" - override val hint_title = "아시나요?" - override val hint_drag = "목록의 순서를 재배치하려면, 습관의 제목을 길게 누르고 다른 위치로 드래그하면 됩니다." - override val hint_landscape = "가로 모드에서는 더 많은 날짜를 볼 수 있습니다." - override val delete_habits = "습관 삭제" - override val delete_habits_message = "습관을 영구적으로 삭제합니다. 이 작업은 취소할 수 없습니다." - override val habit_not_found = "습관 삭제 / 찾을 수 없음" - override val weekends = "주말" - override val any_weekday = "주중" - override val any_day = "매일" - override val select_weekdays = "요일 선택" - override val export_to_csv = "CSV로 내보내기" - override val done_label = "완료" - override val clear_label = "지우기" - override val select_hours = "시간 선택" - override val select_minutes = "분 선택" - override val about = "정보" - override val translators = "번역자" - override val developers = "개발자" - override val version_n = "버전 %s" - override val frequency = "빈도" - override val checkmark = "체크" - override val strength = "강도" - override val best_streaks = "최고 연속 기록" - override val current_streaks = "현재 기록" - override val number_of_repetitions = "반복한 횟수" - override val last_x_days = "이전 %d일 동안" - override val last_x_weeks = "이전 %d주 동안" - override val last_x_months = "이전 %d달 동안" - override val last_x_years = "이전 %d년 동안" - override val all_time = "모두" - override val every_day = "매일" - override val every_week = "매주" - override val two_times_per_week = "일주일에 2번" - override val five_times_per_week = "일주일에 5번" - override val custom_frequency = "직접 정하기" - override val help = "도움 & FAQ" - override val could_not_export = "데이터 내보내기에 실패했습니다." - override val could_not_import = "데이터 가져오기에 실패했습니다." - override val file_not_recognized = "파일을 인식할 수 없습니다." - override val habits_imported = "습관 가져오기에 성공했습니다." - override val full_backup_success = "전체 백업 내보내기에 성공했습니다." - override val import_data = "데이터 가져오기" - override val export_full_backup = "백업 내보내기" - override val import_data_summary = "Tickmate, HabitBull, Rewire에서 생성된 파일도 지원합니다. 더 자세한 설명은 FAQ에 있습니다." - override val export_as_csv_summary = "Microsoft Excel나 OpenOffice Calc 같은 스프레드시트 소프트웨어로 열 수 있는 파일을 생성합니다. 이 파일은 다시 가져올 수 없습니다." - override val export_full_backup_summary = "모든 데이터를 포함한 파일을 생성합니다. 이 파일은 다시 가져올 수 있습니다." - override val bug_report_failed = "오류보고서 작성에 실패했습니다." - override val generate_bug_report = "오류보고서 작성하기" - override val troubleshooting = "문제 해결" - override val help_translate = "이 앱의 번역을 도와주세요" - override val night_mode = "야간 모드" - override val use_pure_black = "야간 모드에서 검정색 사용하기" - override val pure_black_description = "야간 모드의 회색 배경을 검정색으로 대체합니다. AMOLED 디스플레이를 사용하는 기기에서 배터리 사용량을 감소시킵니다." - override val interface_preferences = "인터페이스" - override val reverse_days = "날짜 순서 뒤집기" - override val reverse_days_description = "메인 화면의 날짜를 역순으로 보여줍니다." - override val day = "일" - override val week = "주" - override val month = "월" - override val quarter = "분기" - override val year = "년" - override val total = "전체" - override val time_every = "번" - override val every_x_days = "%d일 마다" - override val every_x_weeks = "%d주 마다" - override val every_x_months = "%d개월 마다" - override val score = "점수" - override val reminder_sound = "알림음" - override val none = "무음" - override val filter = "필터" - override val hide_completed = "완료된 항목 숨기기" - override val hide_archived = "보관된 항목 숨기기" - override val sticky_notifications = "알림 고정하기" - override val sticky_notifications_description = "알림을 스와이프해서 제거하는 것을 방지합니다." - override val repair_database = "데이터베이스 복구" - override val database_repaired = "데이터베이스가 복구되었습니다." - override val uncheck = "선택 해제" - override val toggle = "전환" - override val action = "동작" - override val habit = "습관" - override val sort = "정렬" - override val manually = "수동으로" - override val by_name = "이름 순으로" - override val by_color = "색상 순으로" - override val by_score = "점수 순으로" - override val download = "다운로드" - override val export = "내보내기" -} diff --git a/core/src/main/common/org/isoron/uhabits/i18n/StringsNorwegian.kt b/core/src/main/common/org/isoron/uhabits/i18n/StringsNorwegian.kt deleted file mode 100644 index 52d210a49..000000000 --- a/core/src/main/common/org/isoron/uhabits/i18n/StringsNorwegian.kt +++ /dev/null @@ -1,81 +0,0 @@ -// -------------------------------------------------------------------------- -// THIS FILE WAS AUTOMATICALLY GENERATED -// -// Please do not submit pull request to modify it. Corrections to translations -// may be submitted at https://translate.loophabits.org/ -// -------------------------------------------------------------------------- - -package org.isoron.uhabits.i18n - -class StringsNorwegian : Strings() { - override val main_activity_title = "Kutimoj" - override val action_settings = "Agordoj" - override val edit = "Redakti" - override val delete = "Forigi" - override val archive = "Arĥivo" - override val unarchive = "Elarĥivigi" - override val add_habit = "Aldonu kutimon" - override val color_picker_default_title = "Ŝanĝi koloron" - override val toast_habit_changed = "Kutimo ŝanĝita" - override val toast_habit_archived = "Kutimo arĥivita" - override val habit_strength = "Kutimo forteco" - override val days = "tagoj" - override val reminder = "Memorigaĵoj" - override val discard = "Nuligi" - override val save = "Konservi" - override val streaks = "Strioj" - override val reminder_off = "Neaktiva" - override val snooze = "Poste" - override val intro_title_1 = "Bonvenon" - override val interval_15_minutes = "15 minutoj" - override val interval_30_minutes = "30 minutoj" - override val settings = "Agordoj" - override val delete_habits = "Forigi kutimojn" - override val weekends = "Semajnfinoj" - override val any_weekday = "Lundo al vendredo" - override val any_day = "Io semajntago" - override val select_weekdays = "Elekti tagojn" - override val export_to_csv = "Eksporti kiel CSV" - override val done_label = "Farite" - override val select_hours = "Elekti horojn" - override val select_minutes = "Elekti minutojn" - override val about = "Pri programo" - override val translators = "Tradukantoj" - override val developers = "Evoluigantoj" - override val version_n = "Versio %s" - override val frequency = "Frekvenco" - override val strength = "Forteco" - override val number_of_repetitions = "Nombro de ripetoj" - override val last_x_days = "Lastaj %d tagoj" - override val last_x_weeks = "Lastaj %d semajnoj" - override val last_x_months = "Lastaj %d monatoj" - override val last_x_years = "Lastaj %d jaroj" - override val all_time = "Ĉiuj tempoj" - override val every_day = "Ĉiu tago" - override val every_week = "Ĉiu semajno" - override val two_times_per_week = "Dufoje en semajno" - override val five_times_per_week = "Kvinfoje en semajno" - override val help = "Helpo & Ofte Demandite" - override val file_not_recognized = "Dosiero ne rekonita." - override val full_backup_success = "Plena savkopio sukcese eksportita." - override val troubleshooting = "Problemserĉado" - override val night_mode = "Nokta reĝimo" - override val day = "Tago" - override val week = "Semajno" - override val month = "Monato" - override val quarter = "Jarkvarono" - override val year = "Jaro" - override val none = "Nenio" - override val filter = "Filtrilo" - override val hide_completed = "Kaŝi kompletajn" - override val hide_archived = "Kaŝi arĥivitajn" - override val repair_database = "Ripari datumbazon" - override val database_repaired = "Datumbazon riparita." - override val action = "Ago" - override val habit = "Kutimo" - override val sort = "Enkursigi" - override val by_name = "Laŭ nomo" - override val by_color = "Laŭ koloro" - override val download = "Elŝuti" - override val export = "Eksporti" -} diff --git a/core/src/main/common/org/isoron/uhabits/i18n/StringsPersian.kt b/core/src/main/common/org/isoron/uhabits/i18n/StringsPersian.kt deleted file mode 100644 index 11884fcc4..000000000 --- a/core/src/main/common/org/isoron/uhabits/i18n/StringsPersian.kt +++ /dev/null @@ -1,165 +0,0 @@ -// -------------------------------------------------------------------------- -// THIS FILE WAS AUTOMATICALLY GENERATED -// -// Please do not submit pull request to modify it. Corrections to translations -// may be submitted at https://translate.loophabits.org/ -// -------------------------------------------------------------------------- - -package org.isoron.uhabits.i18n - -class StringsPersian : Strings() { - override val app_name = "Loop Habit Tracker" - override val main_activity_title = "عادت‌ها" - override val action_settings = "تنظیمات" - override val edit = "ویرایش" - override val delete = "حذف" - override val archive = "بایگانی کن" - override val unarchive = "خارج کردن از بایگانی" - override val add_habit = "افزودن عادت" - override val color_picker_default_title = "تغییر رنگ" - override val toast_habit_created = "عادت ایجاد شد" - override val toast_habit_deleted = "عادت حذف شد" - override val toast_habit_restored = "عادت بازگردانده شد" - override val toast_nothing_to_undo = "چیزی برای بازگرداندن به حالت قبلی وجود ندارد" - override val toast_nothing_to_redo = "چیزی برای انجام مجدد وجود ندارد" - override val toast_habit_changed = "عادت تغییر کرد." - override val toast_habit_changed_back = "عادت به حالت قبل برگشت" - override val toast_habit_archived = "عادت‌ها بایگانی شدند" - override val toast_habit_unarchived = "عادت‌ها از بایگانی خارج شدند" - override val overview = "مرور" - override val habit_strength = "قدرت عادت" - override val history = "تاریخچه" - override val clear = "بی‌خیال" - override val description_hint = "سوال (آیا امروز شما…؟)" - override val repeat = "تکرار" - override val times_every = "بار در هر" - override val days = "روز" - override val reminder = "یادآور" - override val discard = "بی‌خیال" - override val save = "ذخیره" - override val streaks = "روزهای پیوسته" - override val no_habits_found = "شما هیچ عادت فعالی ندارید" - override val long_press_to_toggle = "برای تیک زدن یا برداشتن، ضربه بزنید و نگه دارید" - override val reminder_off = "خاموش" - override val validation_name_should_not_be_blank = "جای اسم نمی‌تواند خالی باشد." - override val validation_number_should_be_positive = "عدد بایستی مثبت باشد." - override val validation_at_most_one_rep_per_day = "شما در نهایت می‌توانید یک تکرار در یک روز داشته باشید." - override val create_habit = "درج عادت جدید" - override val edit_habit = "ویرایش عادت" - override val check = "تیک زدن" - override val snooze = "بعداً" - override val intro_title_1 = "خوش آمدید" - override val intro_description_1 = "رهگیر عادت لوپ به شما کمک می‌کند تا برای خودتان عادت‌های خوبی بسازید." - override val intro_title_2 = "ساخت چند عادت جدید" - override val intro_description_2 = "هر روز، بعد از انجام عادت، آن را در برنامه تیک بزنید." - override val intro_title_3 = "ادامه دهید" - override val intro_description_3 = "عادت‌هایی که به صورت پیوسته برای مدت طولانی انجام شده‌اند یک ستاره‌ی کامل دریافت می‌کنند." - override val intro_title_4 = "پیشرفت خود را رهگیری کنید" - override val intro_description_4 = "نمودار جزئیات به شما نشان می‌دهد که چطور عادت‌هایتان با گذشت زمان بهبود پیدا کرده‌اند." - override val interval_15_minutes = "۱۵ دقیقه" - override val interval_30_minutes = "۳۰ دقیقه" - override val interval_1_hour = "۱ ساعت" - override val interval_2_hour = "۲ ساعت" - override val interval_4_hour = "۴ ساعت" - override val interval_8_hour = "۸ ساعت" - override val interval_24_hour = "۲۴ ساعت" - override val pref_toggle_title = "با اشاره‌ی کوتاه‌مدت وضعیت عادت را تغییر بده" - override val pref_toggle_description = "تیک زدن با تک‌ضربه در مقابل ضربه‌زدن و نگه‌داشتن راحت‌تر است ولی ممکن است باعث شود اشتباهی عادتی را تیک بزنید." - override val pref_snooze_interval_title = "بازه به تعویق انداختن یادآورها" - override val pref_rate_this_app = "به این برنامه در گوگل‌پلی امتیاز بدهید" - override val pref_send_feedback = "ارسال بازخورد به توسعه‌دهنده" - override val pref_view_source_code = "دیدن منبع برنامه در گیت‌هاب" - override val pref_view_app_introduction = "مشاهده معرفی برنامه" - override val links = "لینک‌ها" - override val behavior = "رفتار" - override val name = "نام" - override val settings = "تنظیمات" - override val snooze_interval = "بازه به تعویق انداختن" - override val hint_title = "آیا می دانستید؟" - override val hint_drag = "برای جابجایی عناوین، انگشتتان را روی نام عادت مورد نظر بگذارید و نگه دارید، سپس آن را به محل صحیح بکشید." - override val hint_landscape = "با قرار دادن گوشی در حالت افقی می‌توانید روزهای بیشتری را ببینید." - override val delete_habits = "حذف عادت‌ها" - override val delete_habits_message = "عادت‌ها برای همیشه حذف خواهد شد. این عمل قابل بازگشت نیست." - override val habit_not_found = "عادت حذف شده/ پیدا نشد" - override val weekends = "آخر هفته‌ها" - override val any_weekday = "دوشنبه تا جمعه" - override val any_day = "هر روز هفته" - override val select_weekdays = "انتخاب روزها" - override val export_to_csv = "صدور فایل CSV" - override val done_label = "انجام شد" - override val clear_label = "بی‌خیال" - override val select_hours = "انتخاب ساعت" - override val select_minutes = "انتخاب دقیقه" - override val about = "درباره" - override val translators = "مترجمان" - override val developers = "توسعه‌دهندگان" - override val version_n = "نسخه %s" - override val frequency = "تناوب" - override val checkmark = "علامت" - override val strength = "قدرت" - override val best_streaks = "بهترین استمرار" - override val current_streaks = "استمرار فعلی" - override val number_of_repetitions = "تعداد تکرارها" - override val last_x_days = "%d روز اخیر" - override val last_x_weeks = "%d هفته اخیر" - override val last_x_months = "%d ماه اخیر" - override val last_x_years = "%d سال اخیر" - override val all_time = "همیشه" - override val every_day = "هر روز" - override val every_week = "هر هفته" - override val two_times_per_week = "۲ بار در هفته" - override val five_times_per_week = "۵ بار در هفته" - override val custom_frequency = "سفارشی‌سازی ..." - override val help = "راهنما و سوالات متداول" - override val could_not_export = "خطا در صدور اطلاعات." - override val could_not_import = "خطا در وارد کردن اطلاعات." - override val file_not_recognized = "پرونده شناخته شده نیست." - override val habits_imported = "عادت‌ها با موفقیت وارد شدند." - override val full_backup_success = "پرونده پشتیبان کامل، با موفقیت صادر شد." - override val import_data = "ورود اطلاعات" - override val export_full_backup = "پشتیبان گیری کامل" - override val import_data_summary = "علاوه بر پشتیبان کامل تهیه شده توسط این برنامه، از پرونده‌های تولید شده توسط Tickmate، HabitbBull و یا Rewire هم پشتیبانی می‌شود. برای اطلاعات بیشتر سوالات متداول را ببینید." - override val export_as_csv_summary = "پرونده‌ای تولید می‌کند که می‌توان توسط برنامه‌های صفحه گسترده مانند Microsoft Excel و یا OpenOffice Calc بازشان کرد. این پرونده قابلیت وارد کردن مجدد به این برنامه را ندارد." - override val export_full_backup_summary = "پرونده‌ای تولید می‌کند که شامل تمام اطلاعات شما است. این پرونده قابل بازیابی توسط این برنامه می‌باشد." - override val bug_report_failed = "خطایی در تولید گزارش مشکلات بوجود آمد." - override val generate_bug_report = "ایجاد گزارش مشکلات" - override val troubleshooting = "ایرادیابی" - override val help_translate = "کمک برای ترجمه این برنامه" - override val night_mode = "حالت شب" - override val use_pure_black = "استفاده از رنگ سیاه خالص در حالت شبانه" - override val pure_black_description = "جایگزینی پس زمینه خاکستری با سیاه خالص در حالت شب. استفاده از باتری در گوشی‌های با صفحه نمایش AMOLED را کاهش می‌دهد." - override val interface_preferences = "رابط کاربری" - override val reverse_days = "معکوس کردن ترتیب روزها" - override val reverse_days_description = "روزها را در صفحه اصلی با ترتیب معکوس نمایش می‌دهد" - override val day = "روز" - override val week = "هفته" - override val month = "ماه" - override val quarter = "فصل" - override val year = "سال" - override val total = "مجموع" - override val time_every = "بار در هر" - override val every_x_days = "هر %d روز یک‌بار" - override val every_x_weeks = "هر %d هفته یک‌بار" - override val every_x_months = "هر %d ماه یک‌بار" - override val score = "امتیاز" - override val reminder_sound = "صدای یادآور" - override val none = "هیچ‌کدام" - override val filter = "فیلتر" - override val hide_completed = "مخفی کردن کامل شده‌ها" - override val hide_archived = "مخفی کردن بایگانی شده‌ها" - override val sticky_notifications = "چسبناک کردن اعلان‌ها" - override val sticky_notifications_description = "از رد کردن اعلان با کشیدن جلوگیری می‌کند." - override val repair_database = "تعمیر پایگاه داده" - override val database_repaired = "پایگاه داده تعمیر شد." - override val uncheck = "برداشتن تیک" - override val toggle = "تغییر وضعیت" - override val action = "اقدام" - override val habit = "عادت" - override val sort = "مرتب‌سازی" - override val manually = "دستی" - override val by_name = "بر اساس نام" - override val by_color = "بر اساس رنگ" - override val by_score = "بر اساس امتیاز" - override val download = "بارگيری" - override val export = "صدور" -} diff --git a/core/src/main/common/org/isoron/uhabits/i18n/StringsPolish.kt b/core/src/main/common/org/isoron/uhabits/i18n/StringsPolish.kt deleted file mode 100644 index 468ac34b2..000000000 --- a/core/src/main/common/org/isoron/uhabits/i18n/StringsPolish.kt +++ /dev/null @@ -1,165 +0,0 @@ -// -------------------------------------------------------------------------- -// THIS FILE WAS AUTOMATICALLY GENERATED -// -// Please do not submit pull request to modify it. Corrections to translations -// may be submitted at https://translate.loophabits.org/ -// -------------------------------------------------------------------------- - -package org.isoron.uhabits.i18n - -class StringsPolish : Strings() { - override val app_name = "Śledzenie Nawyków Loop" - override val main_activity_title = "Nawyki" - override val action_settings = "Ustawienia" - override val edit = "Edytuj" - override val delete = "Usuń" - override val archive = "Archiwizuj" - override val unarchive = "Odarchiwizuj" - override val add_habit = "Dodaj nawyk" - override val color_picker_default_title = "Zmień kolor" - override val toast_habit_created = "Utworzono nawyk" - override val toast_habit_deleted = "Usunięto nawyki" - override val toast_habit_restored = "Przywrócono nawyki" - override val toast_nothing_to_undo = "Nic do cofnięcia" - override val toast_nothing_to_redo = "Nic do powtórzenia" - override val toast_habit_changed = "Zmieniono nawyk" - override val toast_habit_changed_back = "Zmieniono nawyk z powrotem" - override val toast_habit_archived = "Nawyki zarchiwizowane" - override val toast_habit_unarchived = "Nawyki odarchiwizowane" - override val overview = "Przegląd" - override val habit_strength = "Siła nawyku" - override val history = "Historia" - override val clear = "Wyczyść" - override val description_hint = "Pytanie (Czy zrobiłeś ... dzisiaj?)" - override val repeat = "Powtórz" - override val times_every = "razy w" - override val days = "dni" - override val reminder = "Przypomnienie" - override val discard = "Odrzuć" - override val save = "Zapisz" - override val streaks = "Serie" - override val no_habits_found = "Nie masz aktywnych nawyków" - override val long_press_to_toggle = "Naciśnij i przytrzymaj aby zaznaczyć lub odznaczyć" - override val reminder_off = "Wyłączone" - override val validation_name_should_not_be_blank = "Nazwa nie może być pusta." - override val validation_number_should_be_positive = "Liczba musi być dodatnia." - override val validation_at_most_one_rep_per_day = "Możesz mieć maksymalnie jedno powtórzenie dziennie." - override val create_habit = "Utwórz nawyk" - override val edit_habit = "Edytuj nawyk" - override val check = "Zaznacz" - override val snooze = "Później" - override val intro_title_1 = "Witaj" - override val intro_description_1 = "Śledzenie nawyków Loop pozwala Ci na utworzenie i prowadzenie dobrych nawyków." - override val intro_title_2 = "Utwórz nowe nawyki" - override val intro_description_2 = "Codziennie, po wykonaniu swojego nawyku, postaw znaczek w aplikacji." - override val intro_title_3 = "Kontynuuj swoje nawyki" - override val intro_description_3 = "Nawyki wykonywane przez dłuższy czas otrzymają pełną gwiazdkę." - override val intro_title_4 = "Śledź swój postęp" - override val intro_description_4 = "Szczegółowe grafiki pokazują jak Twoje nawyki polepszyły się z biegiem czasu." - override val interval_15_minutes = "15 minut" - override val interval_30_minutes = "30 minut" - override val interval_1_hour = "1 godzina" - override val interval_2_hour = "2 godziny" - override val interval_4_hour = "4 godziny" - override val interval_8_hour = "8 godzin" - override val interval_24_hour = "24 godziny" - override val pref_toggle_title = "Przełącz powtarzanie krótkim naciśnięciem" - override val pref_toggle_description = "Wygodniejsze, ale może spowodować przypadkowe przełączenia." - override val pref_snooze_interval_title = "Czas drzemki między przypomnieniami" - override val pref_rate_this_app = "Oceń tę aplikację w Google Play" - override val pref_send_feedback = "Prześlij uwagi do programisty" - override val pref_view_source_code = "Zobacz kod źródłowy na GitHub\'ie" - override val pref_view_app_introduction = "Zobacz wprowadzenie do aplikacji" - override val links = "Linki" - override val behavior = "Zachowanie" - override val name = "Nazwa" - override val settings = "Ustawienia" - override val snooze_interval = "Czas drzemki" - override val hint_title = "Czy wiesz że?" - override val hint_drag = "Aby zmienić kolejność naciśnij i przytrzymaj na nazwie nawyku i przesuń go na odpowiednie miejsce." - override val hint_landscape = "Możesz zobaczyć więcej dni trzymając telefon poziomo." - override val delete_habits = "Usuń nawyki" - override val delete_habits_message = "Nawyki zostaną trwale usunięte. Tej operacji nie można cofnąć." - override val habit_not_found = "Nawyk usunięty/nie znaleziony" - override val weekends = "Weekendy" - override val any_weekday = "Dni robocze" - override val any_day = "Każdy dzień" - override val select_weekdays = "Wybierz dni" - override val export_to_csv = "Eksportuj dane (CSV)" - override val done_label = "Gotowe" - override val clear_label = "Wyczyść" - override val select_hours = "Wybierz godziny" - override val select_minutes = "Wybierz minuty" - override val about = "O aplikacji" - override val translators = "Tłumacze" - override val developers = "Programiści" - override val version_n = "Wersja %s" - override val frequency = "Częstotliwość" - override val checkmark = "Znacznik" - override val strength = "Siła" - override val best_streaks = "Najlepsze serie" - override val current_streaks = "Aktualna seria" - override val number_of_repetitions = "Liczba powtórzeń" - override val last_x_days = "Ostatnie %d dni" - override val last_x_weeks = "Ostatnie %d tygodni" - override val last_x_months = "Ostatnie %d miesięcy" - override val last_x_years = "Ostatnie %d lat" - override val all_time = "Od początku" - override val every_day = "Codziennie" - override val every_week = "Co tydzień" - override val two_times_per_week = "2 razy na tydzień" - override val five_times_per_week = "5 razy na tydzień" - override val custom_frequency = "Niestandardowo..." - override val help = "Pomoc & FAQ" - override val could_not_export = "Eksportowanie danych nie powiodło się." - override val could_not_import = "Importowanie danych nie powiodło się." - override val file_not_recognized = "Plik nierozpoznany." - override val habits_imported = "Nawyki zaimportowane pomyślnie." - override val full_backup_success = "Pełna kopia zapasowa pomyślnie wyeksportowana." - override val import_data = "Importuj dane" - override val export_full_backup = "Eksportuj pełną kopię zapasową" - override val import_data_summary = "Wspiera pełne kopie zapasowe wyeksportowane przez tą aplikację zarówno jak i pliki wygenerowane przez Tickmate, Habitbull oraz Rewire. Zobacz FAQ po więcej informacji." - override val export_as_csv_summary = "Generuje pliki, które mogą być otwierane przez arkusze kalkulacyjne takie jak Microsoft Excel czy OpenOffice Calc. Taki plik nie może być importowany." - override val export_full_backup_summary = "Generuje plik, który zawiera wszystkie Twoje dane. Taki plik może być importowany." - override val bug_report_failed = "Nie udało się wygenerować raportu o błędach." - override val generate_bug_report = "Wygeneruj raport o błędach" - override val troubleshooting = "Rozwiązywanie problemów" - override val help_translate = "Pomóż w tłumaczeniu tej aplikacji" - override val night_mode = "Tryb nocny" - override val use_pure_black = "Używaj pełnej czerni w trybie nocnym" - override val pure_black_description = "Zamienia szare tła na pełną czerń w trybie nocnym. Zmniejsza zużycie baterii w telefonach z ekranem AMOLED." - override val interface_preferences = "Interfejs" - override val reverse_days = "Odwróć kolejność dni" - override val reverse_days_description = "Pokaż dni w odwrotnej kolejności na głównym ekranie" - override val day = "Dzień" - override val week = "Tydzień" - override val month = "Miesiąc" - override val quarter = "Kwartał" - override val year = "Rok" - override val total = "Łącznie" - override val time_every = "raz w" - override val every_x_days = "Co %d dni" - override val every_x_weeks = "Co %d tygodni" - override val every_x_months = "Co %d miesięcy" - override val score = "Wynik" - override val reminder_sound = "Dźwięk przypomnienia" - override val none = "Brak" - override val filter = "Filtruj" - override val hide_completed = "Ukryj zakończone" - override val hide_archived = "Ukryj archiwizowane" - override val sticky_notifications = "Przypinaj powiadomienia" - override val sticky_notifications_description = "Zapobiega usunięciu powiadomień." - override val repair_database = "Napraw bazę danych" - override val database_repaired = "Baza danych została naprawiona." - override val uncheck = "Odznacz" - override val toggle = "Przełącz" - override val action = "Akcja" - override val habit = "Nawyk" - override val sort = "Sortuj" - override val manually = "Ręcznie" - override val by_name = "Według nazwy" - override val by_color = "Według koloru" - override val by_score = "Według wyniku" - override val download = "Pobierz" - override val export = "Eksportuj" -} diff --git a/core/src/main/common/org/isoron/uhabits/i18n/StringsPortugueseBR.kt b/core/src/main/common/org/isoron/uhabits/i18n/StringsPortugueseBR.kt deleted file mode 100644 index 4961bd563..000000000 --- a/core/src/main/common/org/isoron/uhabits/i18n/StringsPortugueseBR.kt +++ /dev/null @@ -1,165 +0,0 @@ -// -------------------------------------------------------------------------- -// THIS FILE WAS AUTOMATICALLY GENERATED -// -// Please do not submit pull request to modify it. Corrections to translations -// may be submitted at https://translate.loophabits.org/ -// -------------------------------------------------------------------------- - -package org.isoron.uhabits.i18n - -class StringsPortugueseBR : Strings() { - override val app_name = "Loop - Acompanhador de Hábitos" - override val main_activity_title = "Hábitos" - override val action_settings = "Configurações" - override val edit = "Editar" - override val delete = "Deletar" - override val archive = "Arquivar" - override val unarchive = "Desarquivar" - override val add_habit = "Adicionar hábito" - override val color_picker_default_title = "Mudar cor" - override val toast_habit_created = "Hábito criado." - override val toast_habit_deleted = "Hábito deletado." - override val toast_habit_restored = "Hábitos restaurados." - override val toast_nothing_to_undo = "Nada para desfazer." - override val toast_nothing_to_redo = "Nada para refazer." - override val toast_habit_changed = "Hábito modificado." - override val toast_habit_changed_back = "Hábito restaurado." - override val toast_habit_archived = "Hábitos arquivados." - override val toast_habit_unarchived = "Hábitos restaurados." - override val overview = "Visão geral" - override val habit_strength = "Estabilidade" - override val history = "Histórico" - override val clear = "Limpar" - override val description_hint = "Pergunta (por ex., \"você meditou hoje?\")" - override val repeat = "Repetir" - override val times_every = "vezes em" - override val days = "dias" - override val reminder = "Lembrete" - override val discard = "Cancelar" - override val save = "Salvar" - override val streaks = "Correntes" - override val no_habits_found = "Você não tem nenhum hábito ativo" - override val long_press_to_toggle = "Sustente por um segundo para marcar ou desmarcar" - override val reminder_off = "Desligado" - override val validation_name_should_not_be_blank = "Nome não pode ficar em branco." - override val validation_number_should_be_positive = "Número precisa ser positivo." - override val validation_at_most_one_rep_per_day = "Você pode ter no máximo uma repetição por dia." - override val create_habit = "Criar hábito" - override val edit_habit = "Editar hábito" - override val check = "Marcar" - override val snooze = "Mais tarde" - override val intro_title_1 = "Bem vindo" - override val intro_description_1 = "Loop é um aplicativo que te ajuda a criar e manter bons hábitos." - override val intro_title_2 = "Adicione alguns hábitos" - override val intro_description_2 = "Todo dia, depois de praticar o seu hábito, marque no aplicativo." - override val intro_title_3 = "Continue praticando" - override val intro_description_3 = "Hábitos praticados regularmente por um longo período recebem uma estrela." - override val intro_title_4 = "Acompanhe o seu progresso" - override val intro_description_4 = "Veja como seus hábitos estão progredindo através de diagramas." - override val interval_15_minutes = "15 minutos" - override val interval_30_minutes = "30 minutos" - override val interval_1_hour = "1 hora" - override val interval_2_hour = "2 horas" - override val interval_4_hour = "4 horas" - override val interval_8_hour = "8 horas" - override val interval_24_hour = "24 horas" - override val pref_toggle_title = "Marcar repetições com um toque curto" - override val pref_toggle_description = "Mais conveniente, mas pode causar marcações acidentais" - override val pref_snooze_interval_title = "Duração do \"mais tarde\" nos lembretes" - override val pref_rate_this_app = "Avaliar esse app no Google Play" - override val pref_send_feedback = "Mandar sugestões para o desenvolvedor" - override val pref_view_source_code = "Ver código-fonte no GitHub" - override val pref_view_app_introduction = "Assistir introdução ao aplicativo" - override val links = "Links" - override val behavior = "Interação" - override val name = "Nome" - override val settings = "Configurações" - override val snooze_interval = "Duração do \"mais tarde\"" - override val hint_title = "Dica" - override val hint_drag = "Para mudar a ordem dos hábitos, aperte no nome do hábito, sustente e arraste." - override val hint_landscape = "Para ver mais dias, coloque seu aparelho em modo paisagem." - override val delete_habits = "Deletar hábitos" - override val delete_habits_message = "Os hábitos escolhidos serão deletados permanentemente. Esta ação não pode ser desfeita." - override val habit_not_found = "Hábito deletado / não encontrado" - override val weekends = "Fim de semana" - override val any_weekday = "Segunda a sexta" - override val any_day = "Qualquer dia da semana" - override val select_weekdays = "Selecionar dias" - override val export_to_csv = "Exportar em formato CSV" - override val done_label = "Pronto" - override val clear_label = "Limpar" - override val select_hours = "Selecionar horas" - override val select_minutes = "Selecionar minutos" - override val about = "Sobre" - override val translators = "Tradutores" - override val developers = "Desenvolvedores" - override val version_n = "Versão %s" - override val frequency = "Frequência" - override val checkmark = "Marcações" - override val strength = "Estabilidade" - override val best_streaks = "Correntes mais longas" - override val current_streaks = "Corrente atual" - override val number_of_repetitions = "Número de repetições" - override val last_x_days = "Últimos %d dias" - override val last_x_weeks = "Últimas %d semanas" - override val last_x_months = "Últimos %d meses" - override val last_x_years = "Últimos %d anos" - override val all_time = "Desde o início" - override val every_day = "Todo dia" - override val every_week = "Toda semana" - override val two_times_per_week = "2 vezes por semana" - override val five_times_per_week = "5 vezes por semana" - override val custom_frequency = "Personalizar ..." - override val help = "Ajuda & FAQ" - override val could_not_export = "Erro ao exportar dados." - override val could_not_import = "Erro ao importar dados." - override val file_not_recognized = "Arquivo não reconhecido." - override val habits_imported = "Hábitos importados com sucesso." - override val full_backup_success = "Backup completo exportado com sucesso." - override val import_data = "Importar dados" - override val export_full_backup = "Exportar backup completo" - override val import_data_summary = "Aceita backups completos exportados por este app, além de arquivos gerados por Tickmate, HabitBull ou Rewire. Veja \"Ajuda\" para mais informações." - override val export_as_csv_summary = "Gera arquivos que podem ser abertos em editores de planilha, como Microsoft Excel ou Openoffice Calc. Estes arquivos não podem ser importados de volta." - override val export_full_backup_summary = "Gera um arquivo que contém todos os dados. Este arquivo pode ser importado de volta." - override val bug_report_failed = "Erro ao gerar relatório de erros." - override val generate_bug_report = "Gerar relatório de erros." - override val troubleshooting = "Solução de problemas" - override val help_translate = "Ajude a traduzir este app" - override val night_mode = "Modo noturno" - override val use_pure_black = "Usar preto em modo noturno" - override val pure_black_description = "Substitui os tons de cinza por preto puro em modo noturno. Economiza bateria em telefones com tela AMOLED." - override val interface_preferences = "Interface" - override val reverse_days = "Inverter a ordem dos dias" - override val reverse_days_description = "Mostra os dias em ordem inversa na tela principal" - override val day = "Dia" - override val week = "Semana" - override val month = "Mês" - override val quarter = "Trimestre" - override val year = "Ano" - override val total = "Total" - override val time_every = "vez em" - override val every_x_days = "A cada %d dias" - override val every_x_weeks = "A cada %d semanas" - override val every_x_months = "A cada %d meses" - override val score = "Estabilidade" - override val reminder_sound = "Toque dos lembretes" - override val none = "Nenhum" - override val filter = "Filtro" - override val hide_completed = "Ocultar concluído" - override val hide_archived = "Ocultar arquivado" - override val sticky_notifications = "Tornar notificações persistentes" - override val sticky_notifications_description = "Impede que as notificações sejam dispensadas." - override val repair_database = "Reparar banco de dados" - override val database_repaired = "Banco de dados reparado." - override val uncheck = "Desmarcar" - override val toggle = "Alternar" - override val action = "Ação" - override val habit = "Hábito" - override val sort = "Ordenar" - override val manually = "Manualmente" - override val by_name = "Por nome" - override val by_color = "Por cor" - override val by_score = "Por score" - override val download = "Download" - override val export = "Exportar" -} diff --git a/core/src/main/common/org/isoron/uhabits/i18n/StringsPortuguesePT.kt b/core/src/main/common/org/isoron/uhabits/i18n/StringsPortuguesePT.kt deleted file mode 100644 index f9f6ead43..000000000 --- a/core/src/main/common/org/isoron/uhabits/i18n/StringsPortuguesePT.kt +++ /dev/null @@ -1,141 +0,0 @@ -// -------------------------------------------------------------------------- -// THIS FILE WAS AUTOMATICALLY GENERATED -// -// Please do not submit pull request to modify it. Corrections to translations -// may be submitted at https://translate.loophabits.org/ -// -------------------------------------------------------------------------- - -package org.isoron.uhabits.i18n - -class StringsPortuguesePT : Strings() { - override val main_activity_title = "Hábitos" - override val action_settings = "Definições" - override val edit = "Editar" - override val delete = "Eliminar" - override val archive = "Arquivar" - override val unarchive = "Desarquivar" - override val add_habit = "Adicionar hábito" - override val color_picker_default_title = "Mudar cor" - override val toast_habit_created = "Hábito criado." - override val toast_habit_deleted = "Hábito eliminado." - override val toast_habit_restored = "Hábito restaurado." - override val toast_nothing_to_undo = "Nada a anular." - override val toast_nothing_to_redo = "Nada a refazer." - override val toast_habit_changed = "Hábito modificado." - override val toast_habit_changed_back = "Hábito restaurado." - override val toast_habit_archived = "Hábito arquivado." - override val toast_habit_unarchived = "Hábito desarquivado." - override val overview = "Visão geral" - override val habit_strength = "Pontuação" - override val history = "Histórico" - override val clear = "Limpar" - override val description_hint = "Pergunta (e.g., já meditou hoje?)" - override val repeat = "Repetir" - override val times_every = "vezes em" - override val days = "dias" - override val reminder = "Lembrete" - override val discard = "Cancelar" - override val save = "Guardar" - override val streaks = "Séries" - override val no_habits_found = "Não tem hábitos ativos" - override val long_press_to_toggle = "Mantenha pressionado para marcar ou desmarcar" - override val reminder_off = "Desligado" - override val validation_name_should_not_be_blank = "Nome não pode estar em branco." - override val validation_number_should_be_positive = "Número tem de ser positivo." - override val validation_at_most_one_rep_per_day = "Apenas pode ter no máximo uma repetição por dia" - override val create_habit = "Criar hábito" - override val edit_habit = "Editar hábito" - override val check = "Selecionar" - override val snooze = "Mais tarde" - override val intro_title_1 = "Bem-vindo" - override val intro_description_1 = "Loop é uma aplicação que o ajuda a criar e manter bons hábitos." - override val intro_title_2 = "Adicione alguns hábitos" - override val intro_description_2 = "Todos os dias, após concluir o seu hábito, marque uma cruz na app." - override val intro_title_3 = "Continue praticando" - override val intro_description_3 = "Hábitos praticados regularmente durante algum tempo recebem uma estrela." - override val intro_title_4 = "Acompanhe o seu progresso" - override val intro_description_4 = "Gráficos mostram-lhe como os seus hábitos melhoraram ao longo do tempo." - override val interval_15_minutes = "15 minutos" - override val interval_30_minutes = "30 minutos" - override val interval_1_hour = "1 hora" - override val interval_2_hour = "2 horas" - override val interval_4_hour = "4 horas" - override val interval_8_hour = "8 horas" - override val pref_toggle_title = "Toque para alternar entre repetições" - override val pref_toggle_description = "Mais conveniente, mas pode causar toques acidentais" - override val pref_snooze_interval_title = "Intervalo da opção \'Mais Tarde\' nos lembretes" - override val pref_rate_this_app = "Avaliar a app no Google Play" - override val pref_send_feedback = "Enviar feedback ao programador" - override val pref_view_source_code = "Ver código-fonte no GitHub" - override val pref_view_app_introduction = "Ver introdução da aplicação" - override val behavior = "Comportamento" - override val name = "Nome" - override val settings = "Definições" - override val snooze_interval = "Intervalo da opção \'Mais Tarde\'" - override val hint_title = "Sabia que?" - override val hint_drag = "Para reorganizar a lista, mantenha pressionado o nome do hábito e arraste-o para o lugar certo." - override val hint_landscape = "Pode ver mais dias se utilizar o telemóvel em modo paisagem." - override val delete_habits = "Apagar hábitos" - override val delete_habits_message = "Os hábitos serão permanentemente eliminados. Esta ação é irreversível." - override val weekends = "Fins de Semana" - override val any_weekday = "Segunda a Sexta" - override val any_day = "Qualquer dia da semana" - override val select_weekdays = "Selecionar dias" - override val export_to_csv = "Exportar como CSV" - override val done_label = "Concluído" - override val clear_label = "Limpar" - override val select_hours = "Selecionar horas" - override val select_minutes = "Selecionar minutos" - override val about = "Sobre" - override val translators = "Tradutores" - override val developers = "Programadores" - override val version_n = "Versão %s" - override val frequency = "Frequência" - override val checkmark = "Cruz" - override val strength = "Pontuação" - override val best_streaks = "Melhores séries" - override val current_streaks = "Série atual" - override val number_of_repetitions = "Número de repetições" - override val last_x_days = "Últimos %d dias" - override val last_x_weeks = "Últimas %d semanas" - override val last_x_months = "Últimos %d meses" - override val last_x_years = "Últimos %d anos" - override val all_time = "Desde sempre" - override val every_day = "Todos os dias" - override val every_week = "Todas as semanas" - override val two_times_per_week = "2 vezes por semana" - override val five_times_per_week = "5 vezes por semana" - override val custom_frequency = "Personalizar..." - override val help = "Ajuda & FAQ" - override val could_not_export = "Falha ao exportar dados." - override val could_not_import = "Falha ao importar dados." - override val file_not_recognized = "Ficheiro não reconhecido." - override val habits_imported = "Hábitos importados com sucesso." - override val full_backup_success = "Cópia de segurança completa exportada com sucesso." - override val import_data = "Importar dados" - override val export_full_backup = "Exportar cópia de segurança completa" - override val import_data_summary = "Suporta cópias de segurança completas exportadas por esta app, bem como ficheiros gerados pelo Tickmate, HabitBull ou Rewire. Veja as FAQ para mais informações." - override val export_as_csv_summary = "Gera ficheiros que podem ser abertos por programas de folhas de cálculo, como o Microsoft Excel ou o OpenOffice Calc. Este ficheiro não pode ser importado novamente para a app." - override val export_full_backup_summary = "Gera um ficheiro que contém todos os dados dos seus hábitos. Este ficheiro pode ser novamente importado para a app." - override val bug_report_failed = "Falha a gerar relatório de erros." - override val generate_bug_report = "Gerar relatório de erros" - override val troubleshooting = "Resolução de problemas" - override val help_translate = "Ajude a traduzir esta aplicação" - override val night_mode = "Modo noturno" - override val use_pure_black = "Usar preto puro no modo noturno" - override val pure_black_description = "Substitui os fundos cinzentos por pretos puros no modo noturno. Reduz a utilização da bateria em telemóveis com ecrã AMOLED." - override val reverse_days = "Inverter a ordem dos dias" - override val reverse_days_description = "Mostra os dias em ordem inversa na página principal" - override val day = "Dia" - override val week = "Semana" - override val month = "Mês" - override val quarter = "Trimestre" - override val year = "Ano" - override val time_every = "vez em" - override val every_x_days = "A cada %d dias" - override val every_x_weeks = "A cada %d semanas" - override val every_x_months = "A cada %d meses" - override val score = "Pontuação" - override val reminder_sound = "Som do lembrete" - override val none = "Silencioso" -} diff --git a/core/src/main/common/org/isoron/uhabits/i18n/StringsRomanian.kt b/core/src/main/common/org/isoron/uhabits/i18n/StringsRomanian.kt deleted file mode 100644 index 618d462c4..000000000 --- a/core/src/main/common/org/isoron/uhabits/i18n/StringsRomanian.kt +++ /dev/null @@ -1,144 +0,0 @@ -// -------------------------------------------------------------------------- -// THIS FILE WAS AUTOMATICALLY GENERATED -// -// Please do not submit pull request to modify it. Corrections to translations -// may be submitted at https://translate.loophabits.org/ -// -------------------------------------------------------------------------- - -package org.isoron.uhabits.i18n - -class StringsRomanian : Strings() { - override val main_activity_title = "Obiceiuri" - override val action_settings = "Setări" - override val edit = "Editează" - override val delete = "Șterge" - override val archive = "Arhivează" - override val unarchive = "Dezarhivează" - override val add_habit = "Adaugă obicei" - override val color_picker_default_title = "Schimbă culoarea" - override val toast_habit_created = "Obicei creat." - override val toast_habit_deleted = "Obicei șters." - override val toast_habit_restored = "Obicei restabilit." - override val toast_nothing_to_undo = "Nimic de anulat." - override val toast_nothing_to_redo = "Nimic de refăcut." - override val toast_habit_changed = "Obicei schimbat." - override val toast_habit_changed_back = "Obicei restabilit." - override val toast_habit_archived = "Obicei arhivat." - override val toast_habit_unarchived = "Obicei dezarhivat." - override val overview = "Imagine de ansamblu" - override val habit_strength = "Puterea obiceiurilor" - override val history = "Istoric" - override val clear = "Golește" - override val description_hint = "Întrebare (Ai facut ... astăzi?)" - override val repeat = "Repetă de" - override val times_every = "ori în" - override val days = "zile" - override val reminder = "Reamintire" - override val discard = "Renunță" - override val save = "Salvează" - override val streaks = "Zile consecutive" - override val no_habits_found = "Nu ai niciun obicei activ." - override val long_press_to_toggle = "Apasă și ține pentru a bifa sau a debifa" - override val reminder_off = "Dezactivat" - override val validation_name_should_not_be_blank = "Numele nu poate fi necompletat." - override val validation_number_should_be_positive = "Numărul trebuie să fie pozitiv." - override val validation_at_most_one_rep_per_day = "Poți avea maxim o repetiție pe zi." - override val create_habit = "Adaugă obicei" - override val edit_habit = "Editează obicei" - override val check = "Bifează" - override val snooze = "Mai tarziu" - override val intro_title_1 = "Bun venit" - override val intro_description_1 = "Loop Habit Tracker te ajută să creezi și să menții obiceiurile bune." - override val intro_title_2 = "Adaugă noi obiceiuri" - override val intro_description_2 = "În fiecare zi, după ce îndeplinești obiceiul, bifează-l în aplicație." - override val intro_title_3 = "Continuă să faci asta" - override val intro_description_3 = "Obiceiurile îndeplinite în mod constant pentru o lungă perioadă de timp vor primi o stea." - override val intro_title_4 = "Urmărește progresul" - override val intro_description_4 = "Grafice detaliate ce prezintă cum obiceiurile tale s-au îmbunătățit în timp." - override val interval_15_minutes = "15 minute" - override val interval_30_minutes = "30 de minute" - override val interval_1_hour = "1 oră" - override val interval_2_hour = "2 ore" - override val interval_4_hour = "4 ore" - override val interval_8_hour = "8 ore" - override val pref_toggle_title = "Comută repetițiile printr-o apăsare scurtă" - override val pref_toggle_description = "Mai convenabil, dar poate cauza comutări accidentale." - override val pref_snooze_interval_title = "Intervalul de amânare al reamintirilor." - override val pref_rate_this_app = "Evaluează aplicația pe Google Play" - override val pref_send_feedback = "Trimite feedback dezvoltatorului" - override val pref_view_source_code = "Vezi codul sursă pe GitHub" - override val pref_view_app_introduction = "Vezi introducerea aplicației" - override val links = "Linkuri" - override val behavior = "Comportament" - override val name = "Nume" - override val settings = "Setări" - override val snooze_interval = "Interval de amânare" - override val hint_title = "Știai?" - override val hint_drag = "Pentru a rearanja obiceiurile, apasă și ține numele obiceiului, apoi trage-l în locul corect." - override val hint_landscape = "Poți vedea mai multe zile în modul peisaj." - override val delete_habits = "Șterge obiceiuri" - override val delete_habits_message = "Obiceiurile vor fi șterse permanent. Această acțiune nu este reversibilă." - override val habit_not_found = "Obicei şters / negăsit" - override val weekends = "Weekenduri" - override val any_weekday = "Zile de lucru" - override val any_day = "Orice zi" - override val select_weekdays = "Selectează zilele" - override val export_to_csv = "Exportă datele în format CSV" - override val done_label = "Terminat" - override val clear_label = "Golește" - override val select_hours = "Selectează orele" - override val select_minutes = "Selectează minutele" - override val about = "Despre" - override val translators = "Traducători" - override val developers = "Dezvoltatori" - override val version_n = "Versiunea %s" - override val frequency = "Frecvență" - override val checkmark = "Bifă" - override val strength = "Putere" - override val best_streaks = "Cele mai multe zile consecutive" - override val current_streaks = "Numărul curent de reușite succesive" - override val number_of_repetitions = "Număr de repetiții" - override val last_x_days = "Ultimele %d zile" - override val last_x_weeks = "Ultimele %d săptămâni" - override val last_x_months = "Ultimele %d luni" - override val last_x_years = "Ultimii %d ani" - override val all_time = "Totdeauna" - override val every_day = "În fiecare zi" - override val every_week = "În fiecare săptămână" - override val two_times_per_week = "De 2 ori pe săptămână" - override val five_times_per_week = "De 5 ori pe săptămână" - override val custom_frequency = "Personalizare ..." - override val help = "Ajutor & Întrebări frecvente" - override val could_not_export = "Exportare nereușită." - override val could_not_import = "Importare nereușită." - override val file_not_recognized = "Fișier nerecunoscut." - override val habits_imported = "Obiceiuri importate cu succes." - override val full_backup_success = "Backup exportat cu succes." - override val import_data = "Importă date" - override val export_full_backup = "Exportă backup" - override val import_data_summary = "Acceptă backup-uri exportate de această aplicație precum și fișiere generate de Tickmate, HabitBull sau Rewire. Vezi „Întrebări frecvente” pentru mai multe informații." - override val export_as_csv_summary = "Generează fișiere ce pot fi deschise de software de foi de calcul precum Microsoft Office sau OpenOffice Calc. Acest fișier nu poate fi importat înapoi." - override val export_full_backup_summary = "Generează un fișier ce conține toate datele tale. Acest fișier poate fi importat înapoi." - override val bug_report_failed = "Generare raport de erori nereușită." - override val generate_bug_report = "Generează raport de erori" - override val troubleshooting = "Depanare" - override val reverse_days = "Inversează ordinea zilelor" - override val day = "Zi" - override val week = "Săptămână" - override val month = "Lună" - override val quarter = "Trimestru" - override val year = "An" - override val total = "Total" - override val time_every = "dată la" - override val every_x_days = "La fiecare %d zile" - override val every_x_weeks = "La fiecare %d săptămâni" - override val every_x_months = "La fiecare %d luni" - override val hide_completed = "Ascunde cele completate" - override val hide_archived = "Ascunde cele arhivate" - override val uncheck = "Debifează" - override val habit = "Obicei" - override val sort = "Sortează" - override val manually = "Manual" - override val by_name = "După nume" - override val by_color = "După culoare" -} diff --git a/core/src/main/common/org/isoron/uhabits/i18n/StringsRussian.kt b/core/src/main/common/org/isoron/uhabits/i18n/StringsRussian.kt deleted file mode 100644 index 3d84bb58d..000000000 --- a/core/src/main/common/org/isoron/uhabits/i18n/StringsRussian.kt +++ /dev/null @@ -1,165 +0,0 @@ -// -------------------------------------------------------------------------- -// THIS FILE WAS AUTOMATICALLY GENERATED -// -// Please do not submit pull request to modify it. Corrections to translations -// may be submitted at https://translate.loophabits.org/ -// -------------------------------------------------------------------------- - -package org.isoron.uhabits.i18n - -class StringsRussian : Strings() { - override val app_name = "Трекер привычек Loop" - override val main_activity_title = "Привычки" - override val action_settings = "Настройки" - override val edit = "Редактировать" - override val delete = "Удалить" - override val archive = "Архивировать" - override val unarchive = "Вернуть из архива" - override val add_habit = "Добавить привычку" - override val color_picker_default_title = "Изменить цвет" - override val toast_habit_created = "Привычка создана" - override val toast_habit_deleted = "Привычки удалены" - override val toast_habit_restored = "Привычки восстановлены" - override val toast_nothing_to_undo = "Отменять нечего" - override val toast_nothing_to_redo = "Повторять нечего" - override val toast_habit_changed = "Привычка изменена" - override val toast_habit_changed_back = "Изменения привычки отменены" - override val toast_habit_archived = "Привычки архивированы" - override val toast_habit_unarchived = "Привычки возвращены из архива" - override val overview = "Обзор" - override val habit_strength = "Сила привычки" - override val history = "История" - override val clear = "Очистить" - override val description_hint = "Вопрос (пример: \"Делали ли вы сегодня зарядку?\")" - override val repeat = "Повторять" - override val times_every = "раз в" - override val days = "дней" - override val reminder = "Напоминание" - override val discard = "Отменить" - override val save = "Сохранить" - override val streaks = "Рекорды" - override val no_habits_found = "У вас нет активных привычек" - override val long_press_to_toggle = "Нажмите и удерживайте, чтобы установить или снять галочку" - override val reminder_off = "Выкл" - override val validation_name_should_not_be_blank = "Название не может быть пустым." - override val validation_number_should_be_positive = "Число должно быть положительным." - override val validation_at_most_one_rep_per_day = "Может быть не более одного повторения в день" - override val create_habit = "Добавить привычку" - override val edit_habit = "Изменить привычку" - override val check = "Отметить" - override val snooze = "Отложить" - override val intro_title_1 = "Добро пожаловать" - override val intro_description_1 = "Loop Habit Tracker помогает вам заводить и поддерживать полезные привычки." - override val intro_title_2 = "Добавьте несколько привычек" - override val intro_description_2 = "Каждый день, после выполнения вашей привычки, поставьте галочку в приложении." - override val intro_title_3 = "Продолжайте в том же духе" - override val intro_description_3 = "Стойко соблюдаемые привычки будут отмечены полной звёздочкой." - override val intro_title_4 = "Отслеживайте свои успехи" - override val intro_description_4 = "Детализированные диаграммы демонстрируют, как ваши привычки улучшились со временем." - override val interval_15_minutes = "15 минут" - override val interval_30_minutes = "30 минут" - override val interval_1_hour = "1 час" - override val interval_2_hour = "2 часа" - override val interval_4_hour = "4 часа" - override val interval_8_hour = "8 часов" - override val interval_24_hour = "24 часа" - override val pref_toggle_title = "Отмечать коротким нажатием" - override val pref_toggle_description = "Ставить галочки коротким нажатием вместо удержания. Удобнее, но может стать причиной случайных отметок." - override val pref_snooze_interval_title = "Интервал откладывания напоминаний" - override val pref_rate_this_app = "Оценить приложение в Google Play" - override val pref_send_feedback = "Отправить сообщение разработчику" - override val pref_view_source_code = "Посмотреть исходный код на GitHub" - override val pref_view_app_introduction = "Посмотреть вступительные инструкции" - override val links = "Ссылки" - override val behavior = "Поведение" - override val name = "Название" - override val settings = "Настройки" - override val snooze_interval = "Интервал откладывания" - override val hint_title = "А вы знали?" - override val hint_drag = "Чтобы поменять порядок записей, нажмите и удерживайте название записи, затем перетащите её на нужное место." - override val hint_landscape = "В горизонтальном режиме отображается больше дней." - override val delete_habits = "Удалить привычки" - override val delete_habits_message = "Привычки будут удалены. Это действие невозможно отменить." - override val habit_not_found = "Привычка удалена / не найдена" - override val weekends = "По выходным" - override val any_weekday = "По будням" - override val any_day = "Каждый день" - override val select_weekdays = "Выберите дни" - override val export_to_csv = "Экспортировать как CSV" - override val done_label = "Готово" - override val clear_label = "Очистить" - override val select_hours = "Выберите часы" - override val select_minutes = "Выберите минуты" - override val about = "О приложении" - override val translators = "Переводчики" - override val developers = "Разработчики" - override val version_n = "Версия %s" - override val frequency = "Частота" - override val checkmark = "Галочка" - override val strength = "Сила" - override val best_streaks = "Рекорды" - override val current_streaks = "Текущая серия" - override val number_of_repetitions = "Количество повторений" - override val last_x_days = "Последние %d дней" - override val last_x_weeks = "Последние %d недель" - override val last_x_months = "Последние %d месяцев" - override val last_x_years = "Последние %d лет" - override val all_time = "За всё время" - override val every_day = "Каждый день" - override val every_week = "Каждую неделю" - override val two_times_per_week = "2 раза в неделю" - override val five_times_per_week = "5 раз в неделю" - override val custom_frequency = "Другое …" - override val help = "Помощь и FAQ" - override val could_not_export = "Ошибка экспорта данных." - override val could_not_import = "Ошибка импорта данных." - override val file_not_recognized = "Невозможно определить тип файла." - override val habits_imported = "Привычки успешно импортированы." - override val full_backup_success = "Полная резервная копия успешно экспортирована." - override val import_data = "Импортировать данные" - override val export_full_backup = "Экспортировать полную резервную копию" - override val import_data_summary = "Поддерживает импорт полной резервной копии, экспортированной этим приложением, а также файлов, сгенерированных приложениями Tickmate, HabitBull и Rewire. Больше информации в FAQ." - override val export_as_csv_summary = "Генерирует файлы, которые можно открыть в ПО для работы с таблицами (таком как Microsoft Excel или OpenOffice Calc). Этот файл нельзя импортировать обратно." - override val export_full_backup_summary = "Генерирует файл, который содержит все ваши данные. Этот файл можно импортировать обратно." - override val bug_report_failed = "Ошибка генерации отчёта об ошибке." - override val generate_bug_report = "Сгенерировать отчёт об ошибке" - override val troubleshooting = "Устранение неполадок" - override val help_translate = "Помогите перевести это приложение" - override val night_mode = "Ночной режим" - override val use_pure_black = "Использовать подлинный чёрный в ночном режиме" - override val pure_black_description = "Заменяет серый фон на подлинный чёрный в ночном режиме. Уменьшает использование батареи в телефонах с дисплеем AMOLED." - override val interface_preferences = "Интерфейс" - override val reverse_days = "Обратный порядок дней" - override val reverse_days_description = "Показывать дни в обратном порядке на главном экране" - override val day = "День" - override val week = "Неделя" - override val month = "Месяц" - override val quarter = "Квартал" - override val year = "Год" - override val total = "Всего" - override val time_every = "раз за" - override val every_x_days = "Каждые %d дней" - override val every_x_weeks = "Каждые %d недель" - override val every_x_months = "Каждые %d месяцев" - override val score = "Счет" - override val reminder_sound = "Звук напоминания" - override val none = "Без звука" - override val filter = "Фильтр" - override val hide_completed = "Скрыть завершённые" - override val hide_archived = "Скрыть архивированные" - override val sticky_notifications = "Сделать уведомления \"липкими\"" - override val sticky_notifications_description = "Предотвращает смахивание уведомлений." - override val repair_database = "Исправить базу данных" - override val database_repaired = "База данных исправлена." - override val uncheck = "Снять отметку" - override val toggle = "Переключить" - override val action = "Действие" - override val habit = "Привычка" - override val sort = "Сортировка" - override val manually = "Вручную" - override val by_name = "По названию" - override val by_color = "По цвету" - override val by_score = "По оценке" - override val download = "Загрузить" - override val export = "Экспортировать" -} diff --git a/core/src/main/common/org/isoron/uhabits/i18n/StringsSerbian.kt b/core/src/main/common/org/isoron/uhabits/i18n/StringsSerbian.kt deleted file mode 100644 index 787376752..000000000 --- a/core/src/main/common/org/isoron/uhabits/i18n/StringsSerbian.kt +++ /dev/null @@ -1,144 +0,0 @@ -// -------------------------------------------------------------------------- -// THIS FILE WAS AUTOMATICALLY GENERATED -// -// Please do not submit pull request to modify it. Corrections to translations -// may be submitted at https://translate.loophabits.org/ -// -------------------------------------------------------------------------- - -package org.isoron.uhabits.i18n - -class StringsSerbian : Strings() { - override val app_name = "Loop – праћење навика" - override val main_activity_title = "Навике" - override val action_settings = "Поставке" - override val edit = "Уреди" - override val delete = "Обриши" - override val archive = "Архивирај" - override val unarchive = "Врати из архива" - override val add_habit = "Додај навику" - override val color_picker_default_title = "Промена боје" - override val toast_habit_created = "Навика је створена." - override val toast_habit_deleted = "Навике су обрисане." - override val toast_habit_restored = "Навике су враћене." - override val toast_nothing_to_undo = "Нема шта да се опозове." - override val toast_nothing_to_redo = "Нема шта да се понови." - override val toast_habit_changed = "Навика је промењена." - override val toast_habit_changed_back = "Навика је враћена." - override val toast_habit_archived = "Навике су архивиране." - override val toast_habit_unarchived = "Навике су враћене из архива." - override val overview = "Преглед" - override val habit_strength = "Снага навике" - override val history = "Историја" - override val clear = "Очисти" - override val description_hint = "Питање (нпр. „Да ли сте трчали данас?)" - override val repeat = "Понови" - override val times_every = "пута у" - override val days = "дана" - override val reminder = "Подсетник" - override val discard = "Одбаци" - override val save = "Сачувај" - override val streaks = "Низови" - override val no_habits_found = "Немате активних навика." - override val long_press_to_toggle = "Притисните и држите да бисте маркирали или демаркирали." - override val reminder_off = "искључен" - override val validation_name_should_not_be_blank = "Име не може бити празно." - override val validation_number_should_be_positive = "Број мора бити позитиван." - override val validation_at_most_one_rep_per_day = "Можете имати највише једно понављање на дан." - override val create_habit = "Стварање навике" - override val edit_habit = "Уређивање навике" - override val check = "Маркирај" - override val snooze = "Касније" - override val intro_title_1 = "Добро дошли" - override val intro_description_1 = "Loop вам помаже да створите и одржавате здраве навике." - override val intro_title_2 = "Створите нове навике" - override val intro_description_2 = "Сваког дана, након што обавите навику, означите поље у апликацији." - override val intro_title_3 = "Будите истрајни" - override val intro_description_3 = "Навике којих се доследно придржавате дужи период биће означене пуном звездом." - override val intro_title_4 = "Пратите свој напредак" - override val intro_description_4 = "Детаљни графикони показују вам колико су се ваше навике временом побољшале." - override val interval_15_minutes = "15 минута" - override val interval_30_minutes = "30 минута" - override val interval_1_hour = "1 сат" - override val interval_2_hour = "2 сата" - override val interval_4_hour = "4 сата" - override val interval_8_hour = "8 сати" - override val pref_toggle_title = "Маркирај кратким додиром" - override val pref_toggle_description = "Практичније, али може доћи до случајног маркирања." - override val pref_snooze_interval_title = "Одлагање подсетника" - override val pref_rate_this_app = "Оцени апликацију" - override val pref_send_feedback = "Повратне информације" - override val pref_view_source_code = "Изворни кôд на GitHub-у" - override val pref_view_app_introduction = "Увод апликације" - override val links = "Везе" - override val behavior = "Понашање" - override val name = "Име" - override val settings = "Поставке" - override val snooze_interval = "Време одлагања" - override val hint_title = "Да ли сте знали?" - override val hint_drag = "Притисните и држите име навике да бисте је прераспоредили." - override val hint_landscape = "Положите уређај да бисте видели више дана." - override val delete_habits = "Брисање навика" - override val delete_habits_message = "Навике ће бити трајно обрисане. Ова радња је неповратна." - override val weekends = "викендом" - override val any_weekday = "понедељак–петак" - override val any_day = "сваког дана" - override val select_weekdays = "Избор дана" - override val export_to_csv = "Извези као CSV" - override val done_label = "Готово" - override val clear_label = "Очисти" - override val select_hours = "Избор часова" - override val select_minutes = "Избор минута" - override val about = "О апликацији" - override val translators = "Преводиоци" - override val developers = "Програмери" - override val version_n = "Верзија %s" - override val frequency = "Учесталост" - override val checkmark = "Штрикла" - override val strength = "Снага" - override val best_streaks = "Најбољи низови" - override val current_streaks = "Тренутни низ" - override val number_of_repetitions = "Број понављања" - override val last_x_days = "посл. %d дана" - override val last_x_weeks = "посл. %d нед." - override val last_x_months = "посл. %d мес." - override val last_x_years = "посл. %d год." - override val all_time = "одувек" - override val every_day = "сваког дана" - override val every_week = "сваке недеље" - override val two_times_per_week = "2 пута недељно" - override val five_times_per_week = "5 пута недељно" - override val custom_frequency = "прилагоди…" - override val help = "Помоћ" - override val could_not_export = "Не могу да извезем податке." - override val could_not_import = "Не могу да увезем податке." - override val file_not_recognized = "Датотека није препозната." - override val habits_imported = "Резервна копија је враћена." - override val full_backup_success = "Направљена је резервна копија." - override val import_data = "Врати резервну копију" - override val export_full_backup = "Направи резервну копију" - override val import_data_summary = "Поред матичног формата, апликација подржава и увоз датотека које је направио Tickmate, HabitBull и Rewire. Детаљније у ЧПП." - override val export_as_csv_summary = "Направите датотеку коју можете отворити у програму за рад са табелама (нпр. Microsoft Excel или OpenOffice Calc). Њу не можете да увезете назад у апликацију." - override val export_full_backup_summary = "Направите датотеку са свим подацима апликације. Њу касније можете да увезете." - override val bug_report_failed = "Не могу да направим извештај о грешци." - override val generate_bug_report = "Направи извештај о грешци" - override val troubleshooting = "Решавање проблема" - override val help_translate = "Помоћ у преводу" - override val night_mode = "Ноћни режим" - override val use_pure_black = "Чиста црна у ноћном режиму" - override val pure_black_description = "Замењује сиву позадину са чистом црном у ноћном режиму. Смањује потрошњу батерије код телефона са AMOLED екраном." - override val interface_preferences = "Интерфејс" - override val reverse_days = "Обрнути редослед дана" - override val reverse_days_description = "Прикажите дане у обрнутом редоследу на главном екрану." - override val day = "дан" - override val week = "недеља" - override val month = "месец" - override val quarter = "тромесечје" - override val year = "година" - override val time_every = "пут у" - override val every_x_days = "Сваких %d дана" - override val every_x_weeks = "Сваких %d недеља" - override val every_x_months = "Сваких %d месеци" - override val score = "снага" - override val reminder_sound = "Звук подсетника" - override val none = "Без звука" -} diff --git a/core/src/main/common/org/isoron/uhabits/i18n/StringsSlovak.kt b/core/src/main/common/org/isoron/uhabits/i18n/StringsSlovak.kt deleted file mode 100644 index 5fc2efa4f..000000000 --- a/core/src/main/common/org/isoron/uhabits/i18n/StringsSlovak.kt +++ /dev/null @@ -1,165 +0,0 @@ -// -------------------------------------------------------------------------- -// THIS FILE WAS AUTOMATICALLY GENERATED -// -// Please do not submit pull request to modify it. Corrections to translations -// may be submitted at https://translate.loophabits.org/ -// -------------------------------------------------------------------------- - -package org.isoron.uhabits.i18n - -class StringsSlovak : Strings() { - override val app_name = "Loop Navade" - override val main_activity_title = "Navade" - override val action_settings = "Nastavitve" - override val edit = "Uredi" - override val delete = "Izbriši" - override val archive = "Arhiviraj" - override val unarchive = "Odarhiviraj" - override val add_habit = "Dodaj navado" - override val color_picker_default_title = "Spremeni barvo" - override val toast_habit_created = "Navada ustvarjena" - override val toast_habit_deleted = "Navada izbrisana" - override val toast_habit_restored = "Navada obnovljena" - override val toast_nothing_to_undo = "Nič za razveljaviti." - override val toast_nothing_to_redo = "Nič za ponovno opraviti." - override val toast_habit_changed = "Navada spremenjena." - override val toast_habit_changed_back = "Navada obnovljena." - override val toast_habit_archived = "Navada arhivirana." - override val toast_habit_unarchived = "Navada dearhivirana." - override val overview = "Pregled" - override val habit_strength = "Moč navade" - override val history = "Zgodovina" - override val clear = "Počisti" - override val description_hint = "Vprašanje (Ste ... danes?)" - override val repeat = "Ponovi" - override val times_every = "krat v" - override val days = "dni" - override val reminder = "Opomnik" - override val discard = "Zavrzi" - override val save = "Shrani" - override val streaks = "Serije" - override val no_habits_found = "Nimate aktivnih navad" - override val long_press_to_toggle = "Pritisnite-in-držite, da označite ali odznačite" - override val reminder_off = "Izključeno" - override val validation_name_should_not_be_blank = "Ime ne more biti prazno." - override val validation_number_should_be_positive = "Številka mora biti pozitivna." - override val validation_at_most_one_rep_per_day = "Na dan lahko imate kvečjemu eno ponovitev" - override val create_habit = "Ustvari navado" - override val edit_habit = "Spremeni navado" - override val check = "Označi" - override val snooze = "Kasneje" - override val intro_title_1 = "Dobrodošli" - override val intro_description_1 = "Loop Sledilnik Navad vam pomaga ustvariti in vzdrževati dobre navade." - override val intro_title_2 = "Ustvari nekaj novih navad" - override val intro_description_2 = "Vsak dan, potem ko opravite vašo navado, vnesite kljukico v aplikacijo." - override val intro_title_3 = "Kar tako naprej" - override val intro_description_3 = "Dalj časa dosledno izvedene Navade si bodo zaslužile polno zvezdo." - override val intro_title_4 = "Spremljaj svoj napredek" - override val intro_description_4 = "Podrobni grafi vam pokažejo kako so se skozi čas vaše navede izboljšale." - override val interval_15_minutes = "15 minut" - override val interval_30_minutes = "30 minut" - override val interval_1_hour = "1 ura" - override val interval_2_hour = "2 uri" - override val interval_4_hour = "4 ure" - override val interval_8_hour = "8 ur" - override val interval_24_hour = "24 ur" - override val pref_toggle_title = "Preklopi ponovitve s kratkim pritiskom" - override val pref_toggle_description = "Bolj priročno ampak lahko povzroči nenamerne preklapljanje." - override val pref_snooze_interval_title = "Interval dremeža na opomnikih" - override val pref_rate_this_app = "Oceni to aplikacijo na Google Play" - override val pref_send_feedback = "Pošlji povratne informacije razvijalcem" - override val pref_view_source_code = "Poglej izvorno kodo na GitHub" - override val pref_view_app_introduction = "Poglej uvod aplikacije" - override val links = "Povezave" - override val behavior = "Obnašanje" - override val name = "Ime" - override val settings = "Nastavitve" - override val snooze_interval = "Interval dremeža" - override val hint_title = "Ali ste vedeli?" - override val hint_drag = "Če želite preurediti vnose, pritisnite-in-držite na ime navade, nato pa jo povlecite na željeno mestu." - override val hint_landscape = "Ogledate si lahko več dni, s tem da telefon postavite v ležeči načinu." - override val delete_habits = "Izbriši Navade" - override val delete_habits_message = "Navade bodo trajno izbrisane. Te operacije ni možno razveljaviti." - override val habit_not_found = "Izbrisana navada / ni najdena" - override val weekends = "Vikendi" - override val any_weekday = "Ponedeljek do Petka" - override val any_day = "Vsak dan v tednu" - override val select_weekdays = "Izberi dni" - override val export_to_csv = "Izvozi v CSV" - override val done_label = "Končano" - override val clear_label = "Počisti" - override val select_hours = "Izberi ure" - override val select_minutes = "Izberi minute" - override val about = "O aplikaciji" - override val translators = "Prevajalci" - override val developers = "Razvijalci" - override val version_n = "Verzija %s" - override val frequency = "Pogostost" - override val checkmark = "Kljukica" - override val strength = "Moč" - override val best_streaks = "Najboljša serija" - override val current_streaks = "Trenutna serija" - override val number_of_repetitions = "Število ponovitev" - override val last_x_days = "Zadnjih %d dni" - override val last_x_weeks = "Zadnjih %d tednov" - override val last_x_months = "Zadnjih %d mesecev" - override val last_x_years = "Zadnjih %d let" - override val all_time = "Ves čas" - override val every_day = "Vsak dan" - override val every_week = "Vsak teden" - override val two_times_per_week = "2 krat na teden" - override val five_times_per_week = "5 krat na teden" - override val custom_frequency = "Po meri ..." - override val help = "Pomoč & Pogosta vprašanja" - override val could_not_export = "Neuspešen izvoz podatkov." - override val could_not_import = "Neuspešen uvoz podatkov." - override val file_not_recognized = "Datoteka ni bila prepoznana." - override val habits_imported = "Navade uspešno uvožene." - override val full_backup_success = "Popolna varnostna kopija uspešno izvožena." - override val import_data = "Uvozi podatke" - override val export_full_backup = "Izvozi popolno varnostno kopijo" - override val import_data_summary = "Podpira polne varnostne kopije izvožene iz te aplikacije, kakor tudi datoteke, ki jih ustvari Tickmate, HabitBull ali Rewire. Glej Pogosta vprašanja za več informacij." - override val export_as_csv_summary = "Generirane datoteke, ki se lahko odprejo s programsko opremo za preglednice, kot je Microsoft Excel ali OpenOffice Calc. Te datoteke ni mogoče uvoziti nazaj." - override val export_full_backup_summary = "Ustvari datoteko, ki vsebuje vse podatke. To datoteko lahko nato uvozite nazaj." - override val bug_report_failed = "Neuspeh pri ustvarjanju poročila o napakah" - override val generate_bug_report = "Ustvari poročilo o napakah" - override val troubleshooting = "Odpravljanje napak" - override val help_translate = "Pomagajte prevesti to aplikacijo" - override val night_mode = "Nočni način" - override val use_pure_black = "Uporabite popolno črnino v nočnem načinu" - override val pure_black_description = "Zamenja siva ozadja s popolno črnino v nočnem načinu. Zmanjša porabo baterije na telefonih z AMOLED zasloni." - override val interface_preferences = "Vmesnik" - override val reverse_days = "Zamenjaj vrstni red dni" - override val reverse_days_description = "Prikaži dni v obratnem vrstnem redu na glavnem zaslonu" - override val day = "Dan" - override val week = "Teden" - override val month = "Mesec" - override val quarter = "Četrtletje" - override val year = "Leto" - override val total = "Skupaj" - override val time_every = "enkrat na" - override val every_x_days = "Vsakih %d dni" - override val every_x_weeks = "Vsakih %d tednov" - override val every_x_months = "Vsakih %d mesecev" - override val score = "Ocena" - override val reminder_sound = "Zvok opomnika" - override val none = "Noben" - override val filter = "Filter" - override val hide_completed = "Skrij končane" - override val hide_archived = "Skrij arhivirane" - override val sticky_notifications = "Naaredi obvestila lepljiva" - override val sticky_notifications_description = "Preprečuje, da lahko obvestila povlečete stran." - override val repair_database = "Popravi podatkovno zbirko" - override val database_repaired = "Podatkovna zbirka popravljena." - override val uncheck = "Odznači" - override val toggle = "Preklopi" - override val action = "Dejanje" - override val habit = "Navada" - override val sort = "Razvrsti" - override val manually = "Ročno" - override val by_name = "Po imenu" - override val by_color = "Po barvi" - override val by_score = "Po rezultatu" - override val download = "Prenesi" - override val export = "Izvozi" -} diff --git a/core/src/main/common/org/isoron/uhabits/i18n/StringsSpanish.kt b/core/src/main/common/org/isoron/uhabits/i18n/StringsSpanish.kt deleted file mode 100644 index 9c5148dd4..000000000 --- a/core/src/main/common/org/isoron/uhabits/i18n/StringsSpanish.kt +++ /dev/null @@ -1,165 +0,0 @@ -// -------------------------------------------------------------------------- -// THIS FILE WAS AUTOMATICALLY GENERATED -// -// Please do not submit pull request to modify it. Corrections to translations -// may be submitted at https://translate.loophabits.org/ -// -------------------------------------------------------------------------- - -package org.isoron.uhabits.i18n - -class StringsSpanish : Strings() { - override val app_name = "Loop Analizador de Hábitos" - override val main_activity_title = "Hábitos" - override val action_settings = "Configuración" - override val edit = "Editar" - override val delete = "Eliminar" - override val archive = "Archivar" - override val unarchive = "Desarchivar" - override val add_habit = "Agregar hábito" - override val color_picker_default_title = "Cambiar color" - override val toast_habit_created = "Hábito creado" - override val toast_habit_deleted = "Hábitos eliminados" - override val toast_habit_restored = "Hábitos restaurados" - override val toast_nothing_to_undo = "Nada que deshacer" - override val toast_nothing_to_redo = "Nada que rehacer" - override val toast_habit_changed = "Hábito cambiado" - override val toast_habit_changed_back = "Cambio en hábito vuelto atrás" - override val toast_habit_archived = "Hábitos archivados" - override val toast_habit_unarchived = "Hábitos desarchivados" - override val overview = "Resumen" - override val habit_strength = "Fuerza del hábito" - override val history = "Historial" - override val clear = "Borrar" - override val description_hint = "Pregunta (Has ... hoy?)" - override val repeat = "Repetir" - override val times_every = "veces cada" - override val days = "días" - override val reminder = "Recordatorio" - override val discard = "Descartar" - override val save = "Guardar" - override val streaks = "Rachas" - override val no_habits_found = "No tienes hábitos activos" - override val long_press_to_toggle = "Mantener apretado para marcar o desmarcar" - override val reminder_off = "Apagado" - override val validation_name_should_not_be_blank = "El nombre no puede quedar en blanco." - override val validation_number_should_be_positive = "El número debe ser positivo." - override val validation_at_most_one_rep_per_day = "Puedes tener como máximo una repetición por día" - override val create_habit = "Crear hábito" - override val edit_habit = "Editar hábito" - override val check = "Marcar" - override val snooze = "Aplazar" - override val intro_title_1 = "Bienvenido" - override val intro_description_1 = "Loop Analizador de Hábitos te ayuda a crear y mantener buenos hábitos." - override val intro_title_2 = "Crea algunos hábitos nuevos" - override val intro_description_2 = "Cada día, después de realizar tu hábito, pon una marca en la aplicación." - override val intro_title_3 = "Sigue haciéndolo" - override val intro_description_3 = "Los hábitos realizados consistentemente por un largo tiempo ganarán una estrella completa." - override val intro_title_4 = "Haz un seguimiento de tu progreso" - override val intro_description_4 = "Gráficos detallados muestran cómo mejoraron sus hábitos con el tiempo." - override val interval_15_minutes = "15 minutos" - override val interval_30_minutes = "30 minutos" - override val interval_1_hour = "1 hora" - override val interval_2_hour = "2 horas" - override val interval_4_hour = "4 horas" - override val interval_8_hour = "8 horas" - override val interval_24_hour = "24 horas" - override val pref_toggle_title = "Marca las repeticiones con una pulsación corta" - override val pref_toggle_description = "Más cómodo, pero puede causar marcas accidentales." - override val pref_snooze_interval_title = "Tiempo de espera al aplazar recordatorios" - override val pref_rate_this_app = "Valora esta aplicación en Google Play" - override val pref_send_feedback = "Enviar sugerencias al desarrollador" - override val pref_view_source_code = "Ver código fuente en GitHub" - override val pref_view_app_introduction = "Ver la introducción de la aplicación" - override val links = "Enlaces" - override val behavior = "Comportamiento" - override val name = "Nombre" - override val settings = "Configuración" - override val snooze_interval = "Intervalo de espera" - override val hint_title = "¿Sabías qué?" - override val hint_drag = "Para reordenar las entradas, mantén la pulsado sobre el nombre del hábito, después arrástralo a su posición correcta." - override val hint_landscape = "Puedes ver más días al poner tu teléfono en modo horizontal." - override val delete_habits = "Eliminar Hábitos" - override val delete_habits_message = "Los hábitos serán eliminados permanentemente. Esta acción no se puede deshacer." - override val habit_not_found = "Hábito eliminado / no encontrado" - override val weekends = "Fines de semana" - override val any_weekday = "De lunes a viernes" - override val any_day = "Cada día" - override val select_weekdays = "Seleccionar días" - override val export_to_csv = "Exportar datos (CSV)" - override val done_label = "Hecho" - override val clear_label = "Quitar" - override val select_hours = "Seleccionar horas" - override val select_minutes = "Seleccionar minutos" - override val about = "Acerca de" - override val translators = "Traductores" - override val developers = "Desarrolladores" - override val version_n = "Versión %s" - override val frequency = "Frecuencia" - override val checkmark = "Marca de verificación" - override val strength = "Fuerza" - override val best_streaks = "Mejores rachas" - override val current_streaks = "Racha actual" - override val number_of_repetitions = "Número de repeticiones" - override val last_x_days = "Últimos %d días" - override val last_x_weeks = "Últimas %d semanas" - override val last_x_months = "Últimos %d meses" - override val last_x_years = "Últimos %d años" - override val all_time = "Todo el tiempo" - override val every_day = "Diariamente" - override val every_week = "Semanalmente" - override val two_times_per_week = "2 veces por semana" - override val five_times_per_week = "5 veces por semana" - override val custom_frequency = "Personalizado..." - override val help = "Ayuda & FAQ" - override val could_not_export = "Error al exportar datos." - override val could_not_import = "Error al importar datos." - override val file_not_recognized = "Archivo no reconocido." - override val habits_imported = "Hábitos importados exitosamente." - override val full_backup_success = "Copia de seguridad exportada exitosamente." - override val import_data = "Importar datos" - override val export_full_backup = "Exportar copia de seguridad" - override val import_data_summary = "Soporta exportar copias de seguridad completas, así como archivos generados por Tickmate, HabitBull o Rewire. Mira el FAQ para más información." - override val export_as_csv_summary = "Genera archivos que pueden ser abiertos por programas de hojas de cálculo como Microsoft Excel o OpenOffice Calc. Este archivo no puede volver a importarse." - override val export_full_backup_summary = "Genera un archivo que contiene todos tus datos. Este archivo puede volver a importarse." - override val bug_report_failed = "Error al generar el reporte de error." - override val generate_bug_report = "Generar reporte de errores" - override val troubleshooting = "Solución de problemas" - override val help_translate = "Ayuda a traducir esta app" - override val night_mode = "Modo nocturno" - override val use_pure_black = "Utilizar color negro en modo nocturno" - override val pure_black_description = "Reemplaza fondos grises por color negro en modo nocturno. Reduce el consumo de batería en teléfonos con pantalla AMOLED." - override val interface_preferences = "Interfície" - override val reverse_days = "Orden inverso de días" - override val reverse_days_description = "Mostrar días en orden inverso en la pantalla principal" - override val day = "Día" - override val week = "Semana" - override val month = "Mes" - override val quarter = "Cuatrimestre" - override val year = "Año" - override val total = "Total" - override val time_every = "veces en" - override val every_x_days = "Cada %d días" - override val every_x_weeks = "Cada %d semanas" - override val every_x_months = "Cada %d meses" - override val score = "Puntuación" - override val reminder_sound = "Sonido de recordatorio" - override val none = "Ninguno" - override val filter = "Filtrar" - override val hide_completed = "Ocultar completos" - override val hide_archived = "Ocultar archivados" - override val sticky_notifications = "Hacer notificaciones fijas" - override val sticky_notifications_description = "Evita que las notificaciones sean descartadas." - override val repair_database = "Reparar base de datos" - override val database_repaired = "Base de datos reparada." - override val uncheck = "Desmarcar" - override val toggle = "Alternar" - override val action = "Acción" - override val habit = "Hábito" - override val sort = "Ordenar" - override val manually = "Manualmente" - override val by_name = "Por nombre" - override val by_color = "Por color" - override val by_score = "Por puntuación" - override val download = "Descargar" - override val export = "Exportar" -} diff --git a/core/src/main/common/org/isoron/uhabits/i18n/StringsSwedish.kt b/core/src/main/common/org/isoron/uhabits/i18n/StringsSwedish.kt deleted file mode 100644 index fccbeda43..000000000 --- a/core/src/main/common/org/isoron/uhabits/i18n/StringsSwedish.kt +++ /dev/null @@ -1,165 +0,0 @@ -// -------------------------------------------------------------------------- -// THIS FILE WAS AUTOMATICALLY GENERATED -// -// Please do not submit pull request to modify it. Corrections to translations -// may be submitted at https://translate.loophabits.org/ -// -------------------------------------------------------------------------- - -package org.isoron.uhabits.i18n - -class StringsSwedish : Strings() { - override val app_name = "Loop Habit Tracker" - override val main_activity_title = "Vanor" - override val action_settings = "Inställningar" - override val edit = "Redigera" - override val delete = "Ta bort" - override val archive = "Arkivera" - override val unarchive = "Ångra arkivering" - override val add_habit = "Lägg till vana" - override val color_picker_default_title = "Byt färg" - override val toast_habit_created = "Vana skapad" - override val toast_habit_deleted = "Vanor borttagna" - override val toast_habit_restored = "Vanor återställda" - override val toast_nothing_to_undo = "Inget att ångra" - override val toast_nothing_to_redo = "Inget att ångra" - override val toast_habit_changed = "Vana ändrad" - override val toast_habit_changed_back = "Vana ändrad" - override val toast_habit_archived = "Vanor arkiverade" - override val toast_habit_unarchived = "Vanor återställda" - override val overview = "Översikt" - override val habit_strength = "Vanestyrka" - override val history = "Historik" - override val clear = "Rensa" - override val description_hint = "Fråga (Har du ... idag?)" - override val repeat = "Upprepa" - override val times_every = "gånger i" - override val days = "dagar" - override val reminder = "Påminnelse" - override val discard = "Avbryt" - override val save = "Spara" - override val streaks = "Streaks" - override val no_habits_found = "Du har inga aktiva vanor" - override val long_press_to_toggle = "Tryck-och-håll för att markera eller avmarkera" - override val reminder_off = "Av" - override val validation_name_should_not_be_blank = "Namn får inte vara tomt." - override val validation_number_should_be_positive = "Talet måste vara positivt." - override val validation_at_most_one_rep_per_day = "Du kan ha högst en repetition per dag" - override val create_habit = "Skapa vana" - override val edit_habit = "Redigera vana" - override val check = "Markera" - override val snooze = "Senare" - override val intro_title_1 = "Välkommen" - override val intro_description_1 = "Loop Habit Tracker hjälper dig att skapa och bibehålla goda vanor." - override val intro_title_2 = "Skapa några nya vanor" - override val intro_description_2 = "Efter varje dag när du utfört din vana så markerar du den i appen." - override val intro_title_3 = "Fortsätt att göra det" - override val intro_description_3 = "Vanor som du utför konsekvent över en lång period ger dig en stjärna." - override val intro_title_4 = "Följ dina framsteg" - override val intro_description_4 = "Detaljerade grafer visar dig hur dina vanor förbättras över tid." - override val interval_15_minutes = "15 minuter" - override val interval_30_minutes = "30 minuter" - override val interval_1_hour = "1 timme" - override val interval_2_hour = "2 timmar" - override val interval_4_hour = "4 timmar" - override val interval_8_hour = "8 timmar" - override val interval_24_hour = "24 timmar" - override val pref_toggle_title = "Växla med snabb tryckning" - override val pref_toggle_description = "Markera genom att trycka snabbt istället för att hålla ner. Mer bekvämt, men kan orsaka oavsiktliga aktiveringar." - override val pref_snooze_interval_title = "Standard tid på snooze" - override val pref_rate_this_app = "Betygsätt oss på Google Play" - override val pref_send_feedback = "Skicka feedback till utvecklarna" - override val pref_view_source_code = "Visa källkod på GitHub" - override val pref_view_app_introduction = "Visa introduktion till appen" - override val links = "Länkar" - override val behavior = "Beteende" - override val name = "Namn" - override val settings = "Inställningar" - override val snooze_interval = "Intervall snooze" - override val hint_title = "Visste du att?" - override val hint_drag = "För att flytta på poster - tryck och håll nere på den vana du vill flytta, sedan flytta den till önskad plats." - override val hint_landscape = "Du kan se mer dagar genom att hålla telefonen i landskapsläge." - override val delete_habits = "Ta bort vanor" - override val delete_habits_message = "Vanorna kommer att tas bort permanent. Du kan inte ångra detta." - override val habit_not_found = "Vana borttagen / hittades inte" - override val weekends = "Helger" - override val any_weekday = "Måndag till fredag" - override val any_day = "Vilken dag som helst" - override val select_weekdays = "Välj dagar" - override val export_to_csv = "Exportera data (CSV)" - override val done_label = "Klart" - override val clear_label = "Rensa" - override val select_hours = "Välj timmar" - override val select_minutes = "Välj minuter" - override val about = "Om" - override val translators = "Översättare" - override val developers = "Utvecklare" - override val version_n = "Version %s" - override val frequency = "Frekvens" - override val checkmark = "Kryssruta" - override val strength = "Styrka" - override val best_streaks = "Bästa streak" - override val current_streaks = "Nuvarande streak" - override val number_of_repetitions = "Antal repetitioner" - override val last_x_days = "Sista %d dagarna" - override val last_x_weeks = "Sista %d veckorna" - override val last_x_months = "Sista %d månaderna" - override val last_x_years = "Sista %d åren" - override val all_time = "Från början" - override val every_day = "Varje dag" - override val every_week = "Varje vecka" - override val two_times_per_week = "2 gånger per vecka" - override val five_times_per_week = "5 gånger per vecka" - override val custom_frequency = "Anpassa ..." - override val help = "Hjälp och FAQ" - override val could_not_export = "Det gick inte att exportera." - override val could_not_import = "Det gick inte att importera." - override val file_not_recognized = "Kunde inte känna igen filen." - override val habits_imported = "Import av dina vanor lyckades." - override val full_backup_success = "Fullständig backup har exporterats." - override val import_data = "Importera data" - override val export_full_backup = "Exportera backup" - override val import_data_summary = "Appen har stöd att importera data från denna app, men även backuper från Tickmate, Habitbull eller Rewire. Läs FAQ om du vill meta mer." - override val export_as_csv_summary = "Filerna genererade kan öppnas i Microsoft Excel eller OpenOffice Calc. Däremot kan denna fil inte importeras tillbaka till appen." - override val export_full_backup_summary = "Generera en fil som innehåller all din data. Denna fil kan importas tillbaka till appen." - override val bug_report_failed = "Det gick inte att generera felrapport." - override val generate_bug_report = "Generera felrapport" - override val troubleshooting = "Felsökning" - override val help_translate = "Hjälp till att översätta appen" - override val night_mode = "Nattläge" - override val use_pure_black = "Använd svart färg i nattläge" - override val pure_black_description = "Ersätter gråa bakgrunder med svart färg i nattläge. Reducerar batterianvändningen för telefoner med AMOLED-skärm." - override val interface_preferences = "Gränssnitt" - override val reverse_days = "Omvänd ordning på dagar" - override val reverse_days_description = "Visar dagar i omvänd ordning i appen" - override val day = "Dag" - override val week = "Vecka" - override val month = "Månad" - override val quarter = "Kvartal" - override val year = "År" - override val total = "Totalt" - override val time_every = "gånger var" - override val every_x_days = "Var %d:e dag" - override val every_x_weeks = "Var %d:e vecka" - override val every_x_months = "Var %d:e månad" - override val score = "Poäng" - override val reminder_sound = "Påminnelseljud" - override val none = "Inget" - override val filter = "Filtrera" - override val hide_completed = "Dölj slutförda" - override val hide_archived = "Dölj arkiverade" - override val sticky_notifications = "Gör notifikationer permanenta" - override val sticky_notifications_description = "Förhindrar att notifikationer stängs." - override val repair_database = "Reparera databas" - override val database_repaired = "Databasen reparerad." - override val uncheck = "Avmarkera" - override val toggle = "Växla" - override val action = "Åtgärd" - override val habit = "Vana" - override val sort = "Sortera" - override val manually = "Manuellt" - override val by_name = "Efter namn" - override val by_color = "Efter färg" - override val by_score = "Efter poäng" - override val download = "Ladda ner" - override val export = "Exportera" -} diff --git a/core/src/main/common/org/isoron/uhabits/i18n/StringsTurkish.kt b/core/src/main/common/org/isoron/uhabits/i18n/StringsTurkish.kt deleted file mode 100644 index df8b81efb..000000000 --- a/core/src/main/common/org/isoron/uhabits/i18n/StringsTurkish.kt +++ /dev/null @@ -1,165 +0,0 @@ -// -------------------------------------------------------------------------- -// THIS FILE WAS AUTOMATICALLY GENERATED -// -// Please do not submit pull request to modify it. Corrections to translations -// may be submitted at https://translate.loophabits.org/ -// -------------------------------------------------------------------------- - -package org.isoron.uhabits.i18n - -class StringsTurkish : Strings() { - override val app_name = "Loop Alışkanlık Takip" - override val main_activity_title = "Alışkanlıklar" - override val action_settings = "Ayarlar" - override val edit = "Düzenle" - override val delete = "Sil" - override val archive = "Arşivle" - override val unarchive = "Arşivden Çıkar" - override val add_habit = "Alışkanlık ekle" - override val color_picker_default_title = "Renk Değiştir" - override val toast_habit_created = "Alışkanlık oluşturuldu." - override val toast_habit_deleted = "Alışkanlık silindi." - override val toast_habit_restored = "Alışkanlıklar geri getirildi" - override val toast_nothing_to_undo = "Geri alınacak bir şey yok" - override val toast_nothing_to_redo = "Tekrar yapılacak birşey yok." - override val toast_habit_changed = "Alışkanlık değiştirildi" - override val toast_habit_changed_back = "Alışkanlık eski haline getirildi" - override val toast_habit_archived = "Alışkanlık arşivlendi." - override val toast_habit_unarchived = "Alışkanlık arşivden çıkarıldı." - override val overview = "Genel Bakış" - override val habit_strength = "Alışkanlık gücü" - override val history = "Geçmiş" - override val clear = "Temizle" - override val description_hint = "Soru (Bugün ... yaptın mı?)" - override val repeat = "Tekrar" - override val times_every = "defa /" - override val days = "gün" - override val reminder = "Hatırlatma" - override val discard = "Vazgeç" - override val save = "Kaydet" - override val streaks = "Seriler" - override val no_habits_found = "Etkin alışkanlığın yok" - override val long_press_to_toggle = "İşaretlemek ya da işaret kaldırmak için basılı tut" - override val reminder_off = "Kapalı" - override val validation_name_should_not_be_blank = "Adı boş bırakamazsın." - override val validation_number_should_be_positive = "Sayılar sıfırdan büyük olmalı." - override val validation_at_most_one_rep_per_day = "Günde en fazla bir tekrar yapabilirsin." - override val create_habit = "Alışkanlık oluştur" - override val edit_habit = "Alışkanlık düzenle" - override val check = "Yaptım" - override val snooze = "Sonra" - override val intro_title_1 = "Hoşgeldin" - override val intro_description_1 = "Loop Alışkanlık Takibi, iyi alışkanlıklar edinmene ve sürdürmene yardımcı olur." - override val intro_title_2 = "Yeni alışkanlıklar oluştur" - override val intro_description_2 = "Her gün, alışkanlığını gerçekleştirdikten sonra, uygulamada onay işareti koy." - override val intro_title_3 = "Yapmaya devam et" - override val intro_description_3 = "Uzun süre düzenli sürdürdüğün alışkanlıkların için bir tam yıldız kazanacaksın." - override val intro_title_4 = "Gelişimini izle" - override val intro_description_4 = "Detaylı grafiklerle, zaman içinde alışkanlıklarının nasıl geliştiğini gör." - override val interval_15_minutes = "15 dakika" - override val interval_30_minutes = "30 dakika" - override val interval_1_hour = "1 saat" - override val interval_2_hour = "2 saat" - override val interval_4_hour = "4 saat" - override val interval_8_hour = "8 saat" - override val interval_24_hour = "24 saat" - override val pref_toggle_title = "Kısa dokunuşla işaretle" - override val pref_toggle_description = "Alışkanlıklarını basılı tutmak yerine tek dokunuşla işaretlemeni sağlar. Kullanımı daha rahattır ama kaza eseri işaretleme yapabilirsin." - override val pref_snooze_interval_title = "Hatırlatmalardaki erteleme süresi" - override val pref_rate_this_app = "Google Play\'de uygulamayı oyla" - override val pref_send_feedback = "Geliştiriciye geri bildirim gönder" - override val pref_view_source_code = "Github\'da kaynak kodunu gör" - override val pref_view_app_introduction = "Uygulama tanıtımını göster" - override val links = "Bağlantılar" - override val behavior = "Davranış" - override val name = "Ad" - override val settings = "Ayarlar" - override val snooze_interval = "Erteleme süresi" - override val hint_title = "Biliyor muydun?" - override val hint_drag = "Girdileri sıralamak için, alışkanlık adının üstüne basılı tut ve doğru yere sürükle." - override val hint_landscape = "Cihazını yatay tutarak daha fazla gün görebilirsin." - override val delete_habits = "Alışkanlıkları Sil" - override val delete_habits_message = "Alışkanlıklar kalıcı olarak silinecek. Bu eylem geri alınamaz." - override val habit_not_found = "Alışkanlık silinmiş ya da bulunamadı" - override val weekends = "Hafta sonları" - override val any_weekday = "Pazartesi-Cuma" - override val any_day = "Haftanın herhangi bir günü" - override val select_weekdays = "Günleri seç" - override val export_to_csv = "CSV olarak dışa aktar" - override val done_label = "Tamam" - override val clear_label = "Temizle" - override val select_hours = "Saat seç" - override val select_minutes = "Dakika seç" - override val about = "Hakkında" - override val translators = "Çevirmenler" - override val developers = "Geliştiriciler" - override val version_n = "Sürüm %s" - override val frequency = "Sıklık" - override val checkmark = "İşaret" - override val strength = "Güç" - override val best_streaks = "En uzun seriler" - override val current_streaks = "Şimdiki seri" - override val number_of_repetitions = "Tekrar sayısı" - override val last_x_days = "Son %d gün" - override val last_x_weeks = "Son %d hafta" - override val last_x_months = "Son %d ay" - override val last_x_years = "Son %d yıl" - override val all_time = "Tüm zamanlar" - override val every_day = "Her gün" - override val every_week = "Her hafta" - override val two_times_per_week = "Haftada 2 kez" - override val five_times_per_week = "Haftada 5 kez" - override val custom_frequency = "Özel ..." - override val help = "Yardım & SSS" - override val could_not_export = "Dışarı veri aktarımı başarısız." - override val could_not_import = "İçeri veri aktarımı başarısız." - override val file_not_recognized = "Dosya tanınamadı." - override val habits_imported = "Alışkanlıklar başarıyla içeri aktarıldı." - override val full_backup_success = "Tam yedek başarıyla dışarı aktarıldı." - override val import_data = "İçeri veri aktar" - override val export_full_backup = "Tüm yedeği dışarı aktar" - override val import_data_summary = "Hem bu uygulama tarafından dışarı aktarılmış tam yedekleri, hem de Tickmate, HabitBull veya Rewire tarafından üretilmiş dosyaları destekler. Daha fazla bilgi için SSS\'a başvurun." - override val export_as_csv_summary = "Üretilen dosyalar, Microsoft Excel veya OpenOffice Calc. gibi hesap taplosu uygulamaları ile açılabilir. Bu dosya yeniden içeri aktarılamaz." - override val export_full_backup_summary = "Tüm verilerini içeren bir dosya üretir. Bu dosya yeniden içeri aktarılabilir." - override val bug_report_failed = "Hata raporu oluşturulamadı." - override val generate_bug_report = "Hata raporu üret" - override val troubleshooting = "Sorun Giderme" - override val help_translate = "Bu uygulamanın çevirisine yardım et" - override val night_mode = "Gece kipi" - override val use_pure_black = "Gece kipinde saf siyah kullan" - override val pure_black_description = "Gece kipinde gri arkaplanını, saf siyah ile değiştir. AMOLED ekranlı cihazlarda pil kullanımını azaltabilir." - override val interface_preferences = "Arayüz" - override val reverse_days = "Günleri ters sırala" - override val reverse_days_description = "Ana ekranda günleri tersten göster" - override val day = "Gün" - override val week = "Hafta" - override val month = "Ay" - override val quarter = "3 Ay" - override val year = "Yıl" - override val total = "Tümü" - override val time_every = "defa /" - override val every_x_days = "Her %d gün" - override val every_x_weeks = "Her %d hafta" - override val every_x_months = "Her %d ay" - override val score = "Puan" - override val reminder_sound = "Hatırlatma sesi" - override val none = "Sessiz" - override val filter = "Filtre" - override val hide_completed = "Tamamlananları gizle" - override val hide_archived = "Arşivlenenleri gizle" - override val sticky_notifications = "Bildirimleri kalıcı yap" - override val sticky_notifications_description = "Bildirimlerin kaydırılarak temizlenmesini engelle." - override val repair_database = "Veritabanını onar" - override val database_repaired = "Veritabanı onarıldı." - override val uncheck = "İşareti kaldır" - override val toggle = "Değiştir" - override val action = "Eylem" - override val habit = "Alışkanlık" - override val sort = "Sırala" - override val manually = "Elle" - override val by_name = "Ada göre" - override val by_color = "Renge göre" - override val by_score = "Puana göre" - override val download = "İndir" - override val export = "Dışarı aktar" -} diff --git a/core/src/main/common/org/isoron/uhabits/i18n/StringsUkrainian.kt b/core/src/main/common/org/isoron/uhabits/i18n/StringsUkrainian.kt deleted file mode 100644 index e780667e6..000000000 --- a/core/src/main/common/org/isoron/uhabits/i18n/StringsUkrainian.kt +++ /dev/null @@ -1,165 +0,0 @@ -// -------------------------------------------------------------------------- -// THIS FILE WAS AUTOMATICALLY GENERATED -// -// Please do not submit pull request to modify it. Corrections to translations -// may be submitted at https://translate.loophabits.org/ -// -------------------------------------------------------------------------- - -package org.isoron.uhabits.i18n - -class StringsUkrainian : Strings() { - override val app_name = "Трекер звичок Loop" - override val main_activity_title = "Звички" - override val action_settings = "Налаштування" - override val edit = "Змінити" - override val delete = "Вилучити" - override val archive = "Архівувати" - override val unarchive = "Розархівувати" - override val add_habit = "Додати звичку" - override val color_picker_default_title = "Змінити колір" - override val toast_habit_created = "Звичку створено" - override val toast_habit_deleted = "Звички вилучено" - override val toast_habit_restored = "Звички відновлено" - override val toast_nothing_to_undo = "Скасовувати нічого" - override val toast_nothing_to_redo = "Повторювати нічого" - override val toast_habit_changed = "Звичку змінено" - override val toast_habit_changed_back = "Зміну звички скасовано" - override val toast_habit_archived = "Звички архівовано" - override val toast_habit_unarchived = "Звички повернуто з архіву" - override val overview = "Огляд" - override val habit_strength = "Сила звички" - override val history = "Історія" - override val clear = "Очистити" - override val description_hint = "Питання (приклад: \"Чи робили ви ранкову зарядку сьогодні?\")" - override val repeat = "Повторювати" - override val times_every = "рази (-ів) за" - override val days = "дні(-в)" - override val reminder = "Нагадування" - override val discard = "Скасувати" - override val save = "Зберегти" - override val streaks = "Серії" - override val no_habits_found = "У вас немає активних звичок" - override val long_press_to_toggle = "Натисніть та утримуйте, щоб встановити або зняти пташку" - override val reminder_off = "Вимкнути" - override val validation_name_should_not_be_blank = "Назва не може бути порожньою." - override val validation_number_should_be_positive = "Число має бути додатнім." - override val validation_at_most_one_rep_per_day = "Можливо не більше одного повторення на день" - override val create_habit = "Додати звичку" - override val edit_habit = "Змінити звичку" - override val check = "Відзначити" - override val snooze = "Відкласти" - override val intro_title_1 = "Ласкаво просимо" - override val intro_description_1 = "Трекер звичок Loop допомагає вам розвивати і підтримувати корисні звички." - override val intro_title_2 = "Додайте нові звички" - override val intro_description_2 = "Щодня, після виконання вашої звички, ставте пташку в програмі." - override val intro_title_3 = "Продовжуйте в тому ж дусі" - override val intro_description_3 = "Постійно дотримувані звички буде відзначено повною зірочкою." - override val intro_title_4 = "Відстежуйте свої успіхи" - override val intro_description_4 = "Деталізовані хвилеписи демонструють, як ваші звички покращилися з часом." - override val interval_15_minutes = "15 хвилин" - override val interval_30_minutes = "30 хвилин" - override val interval_1_hour = "1 година" - override val interval_2_hour = "2 години" - override val interval_4_hour = "4 години" - override val interval_8_hour = "8 годин" - override val interval_24_hour = "24 години" - override val pref_toggle_title = "Відзначати коротким натисканням" - override val pref_toggle_description = "Ставити пташки коротким натисканням, замість утримування. Дещо зручніше, але може стати причиною випадкових натискань." - override val pref_snooze_interval_title = "Час відкладення нагадувань" - override val pref_rate_this_app = "Оцінити цей застосунок в Google Play" - override val pref_send_feedback = "Надіслати відозву розробникові" - override val pref_view_source_code = "Подивитися вихідний код на GitHub" - override val pref_view_app_introduction = "Переглянути вступні інструкції" - override val links = "Посилання" - override val behavior = "Поведінка" - override val name = "Назва" - override val settings = "Налаштування" - override val snooze_interval = "Час відкладення" - override val hint_title = "Чи знаєте ви?" - override val hint_drag = "Аби змінити порядок записів, натисніть і утримуйте назву запису, опісля перетягніть запис на потрібне місце." - override val hint_landscape = "У поземному режимі відображається більше днів." - override val delete_habits = "Вилучити звички" - override val delete_habits_message = "Звички буде вилучено. Цю дію не можна скасувати." - override val habit_not_found = "Звичку вилучено / не знайдено" - override val weekends = "У вихідні" - override val any_weekday = "У будні" - override val any_day = "Щодня" - override val select_weekdays = "Оберіть дні" - override val export_to_csv = "Експортувати як CVS" - override val done_label = "Готово" - override val clear_label = "Очистити" - override val select_hours = "Оберіть години" - override val select_minutes = "Оберіть хвилини" - override val about = "Про програму" - override val translators = "Перекладачі" - override val developers = "Розробники" - override val version_n = "Версія %s" - override val frequency = "Частота" - override val checkmark = "Пташка" - override val strength = "Сила" - override val best_streaks = "Найкращі серії" - override val current_streaks = "Поточна серія" - override val number_of_repetitions = "Число повторень" - override val last_x_days = "Останні %d дні(-в)" - override val last_x_weeks = "Останні %d тижні (-в)" - override val last_x_months = "Останні %d місяці (-в)" - override val last_x_years = "Останні %d роки (-ів)" - override val all_time = "Від початку" - override val every_day = "Щодня" - override val every_week = "Щотижня" - override val two_times_per_week = "Двічі на тиждень" - override val five_times_per_week = "5 разів на тиждень" - override val custom_frequency = "Инше…" - override val help = "Допомога & ЧаПи" - override val could_not_export = "Помилка експортування даних." - override val could_not_import = "Помилка імпортування даних." - override val file_not_recognized = "Неможливо визначити тип файлу." - override val habits_imported = "Звички успішно імпортовано." - override val full_backup_success = "Повна резервна копія успішно експортована." - override val import_data = "Імпортувати дані" - override val export_full_backup = "Експортувати повну резервну копію" - override val import_data_summary = "Підтримує імпортування повної резервної копії, експортованої цією програмою, а також файлів, створених програмами Tickmate, HabitBull та Rewire. Більше інформації дивіться у ЧаПи." - override val export_as_csv_summary = "Створює файли, які можна відкрити у програмах для роботи з таблицями (як-от: Microsoft Excel або OpenOffice Calc). Цей файл не можна імпортувати назад." - override val export_full_backup_summary = "Створює файл, що містить усі ваші дані. Цей файл можна імпортувати назад." - override val bug_report_failed = "Помилка створення звіту про помилку." - override val generate_bug_report = "Створити звіт про помилку" - override val troubleshooting = "Усунення несправностей" - override val help_translate = "Допоможіть перекласти цю програму" - override val night_mode = "Нічний режим" - override val use_pure_black = "Користати цілком чорне тло у нічному режимі" - override val pure_black_description = "Замінює сіре тло на цілком чорне у нічному режимі. Зменшує використання батареї в телефонах із дисплеєм AMOLED." - override val interface_preferences = "Оболонка" - override val reverse_days = "Зворотній лад днів" - override val reverse_days_description = "Показувати дні у зворотньому порядку на головному екрані" - override val day = "День" - override val week = "Тиждень" - override val month = "Місяць" - override val quarter = "Квартал" - override val year = "Рік" - override val total = "Усього" - override val time_every = "раз у" - override val every_x_days = "Кожні %d дні(-в)" - override val every_x_weeks = "Кожні %d тижні(-в)" - override val every_x_months = "Кожні %d місяці (-в)" - override val score = "Сталість" - override val reminder_sound = "Звук нагадування" - override val none = "Немає" - override val filter = "Фільтр" - override val hide_completed = "Приховати завершені" - override val hide_archived = "Приховати архівовані" - override val sticky_notifications = "Закріпити сповіщення" - override val sticky_notifications_description = "Запобігає прихованню сповіщень." - override val repair_database = "Відновити базу даних" - override val database_repaired = "Базу даних відновлено." - override val uncheck = "Зняти позначку" - override val toggle = "Перемкнути" - override val action = "Дія" - override val habit = "Звичка" - override val sort = "Сортувати" - override val manually = "Самотужки" - override val by_name = "За назвою" - override val by_color = "За кольором" - override val by_score = "За сталістю" - override val download = "Завантажити" - override val export = "Експортувати" -} diff --git a/core/src/main/common/org/isoron/uhabits/i18n/StringsVietnamese.kt b/core/src/main/common/org/isoron/uhabits/i18n/StringsVietnamese.kt deleted file mode 100644 index 6ccf113bc..000000000 --- a/core/src/main/common/org/isoron/uhabits/i18n/StringsVietnamese.kt +++ /dev/null @@ -1,39 +0,0 @@ -// -------------------------------------------------------------------------- -// THIS FILE WAS AUTOMATICALLY GENERATED -// -// Please do not submit pull request to modify it. Corrections to translations -// may be submitted at https://translate.loophabits.org/ -// -------------------------------------------------------------------------- - -package org.isoron.uhabits.i18n - -class StringsVietnamese : Strings() { - override val app_name = "Herhaalde Gewoonte Boekhouer" - override val main_activity_title = "Gewoontes" - override val action_settings = "Instellings" - override val edit = "Redigeer" - override val delete = "Verwyder" - override val archive = "Argiveer" - override val unarchive = "Deargiveer" - override val add_habit = "Voeg gewoonte by" - override val color_picker_default_title = "Verander kleur" - override val toast_habit_created = "Gewoonte geskep" - override val toast_habit_deleted = "Gewoontes verwyder" - override val toast_habit_restored = "Gewoontes herstel" - override val toast_nothing_to_undo = "Niks om terug te doen nie" - override val toast_nothing_to_redo = "Niks om oor te doen nie" - override val toast_habit_changed = "Gewoonte verander" - override val toast_habit_changed_back = "Gewoonte terug verander" - override val toast_habit_archived = "Gewoontes geargiveer" - override val toast_habit_unarchived = "Gewoontes gedeargiveer" - override val overview = "Oorsig" - override val intro_title_1 = "Welkom" - override val interval_15_minutes = "15 minute" - override val interval_30_minutes = "30 minute" - override val interval_1_hour = "1 uur" - override val interval_2_hour = "2 ure" - override val interval_4_hour = "4 ure" - override val interval_8_hour = "8 ure" - override val interval_24_hour = "24 ure" - override val settings = "Instellings" -} diff --git a/core/src/main/ios/org/isoron/platform/io/IosDatabase.kt b/core/src/main/ios/org/isoron/platform/io/IosDatabase.kt index 2f3501bc1..34a12376f 100644 --- a/core/src/main/ios/org/isoron/platform/io/IosDatabase.kt +++ b/core/src/main/ios/org/isoron/platform/io/IosDatabase.kt @@ -20,19 +20,25 @@ package org.isoron.platform.io import kotlinx.cinterop.* +import platform.Foundation.* import sqlite3.* fun sqlite3_errstr(db: CPointer): String { return "SQLite3 error: " + sqlite3_errmsg(db).toString() } +@Suppress("CAST_NEVER_SUCCEEDS") class IosDatabaseOpener : DatabaseOpener { override fun open(file: UserFile): Database = memScoped { - val db = alloc>() val path = (file as IosFile).path - if (sqlite3_open(path, db.ptr) != SQLITE_OK) { - throw Exception(sqlite3_errstr(db.value!!)) - } + val dirname = (path as NSString).stringByDeletingLastPathComponent + NSFileManager.defaultManager.createDirectoryAtPath(dirname, true, null, null) + + val db = alloc>() + val result = sqlite3_open(path, db.ptr) + if (result != SQLITE_OK) + throw Exception("sqlite3_open failed (code $result)") + return IosDatabase(db.value!!) } } @@ -41,9 +47,9 @@ class IosDatabase(val db: CPointer) : Database { override fun prepareStatement(sql: String): PreparedStatement = memScoped { if (sql.isEmpty()) throw Exception("empty SQL query") val stmt = alloc>() - if (sqlite3_prepare_v2(db, sql.cstr, -1, stmt.ptr, null) != SQLITE_OK) { - throw Exception(sqlite3_errstr(db)) - } + val result = sqlite3_prepare_v2(db, sql.cstr, -1, stmt.ptr, null) + if (result != SQLITE_OK) + throw Exception("sqlite3_prepare_v2 failed (code $result)") return IosPreparedStatement(db, stmt.value!!) } override fun close() { @@ -54,8 +60,7 @@ class IosDatabase(val db: CPointer) : Database { class IosPreparedStatement(val db: CPointer, val stmt: CPointer) : PreparedStatement { override fun step(): StepResult { - val result = sqlite3_step(stmt) - when (result) { + when (sqlite3_step(stmt)) { SQLITE_ROW -> return StepResult.ROW SQLITE_DONE -> return StepResult.DONE else -> throw Exception(sqlite3_errstr(db)) diff --git a/core/src/main/ios/org/isoron/platform/io/Strings.kt b/core/src/main/ios/org/isoron/platform/io/Strings.kt index bda11de60..e774348ea 100644 --- a/core/src/main/ios/org/isoron/platform/io/Strings.kt +++ b/core/src/main/ios/org/isoron/platform/io/Strings.kt @@ -21,10 +21,26 @@ package org.isoron.platform.io import kotlinx.cinterop.* -actual fun sprintf(format: String, vararg args: Any?): String { +// Although the three following methods have exactly the same implementation, +// replacing them all by a single format(format: String, arg: Any) breaks +// everything, as of Kotlin/Native 1.3.72. Apparently, Kotlin/Native is not +// able to do proper type conversions for variables of type Any when calling +// C functions. + +actual fun format(format: String, arg: String): String { + val buffer = ByteArray(1000) + buffer.usePinned { p -> platform.posix.sprintf(p.addressOf(0), format, arg) } + return buffer.toKString() +} + +actual fun format(format: String, arg: Int): String { + val buffer = ByteArray(1000) + buffer.usePinned { p -> platform.posix.sprintf(p.addressOf(0), format, arg) } + return buffer.toKString() +} + +actual fun format(format: String, arg: Double): String { val buffer = ByteArray(1000) - buffer.usePinned { p -> - platform.posix.sprintf(p.addressOf(0), format, *args) - } - return buffer.stringFromUtf8() -} \ No newline at end of file + buffer.usePinned { p -> platform.posix.sprintf(p.addressOf(0), format, arg) } + return buffer.toKString() +} diff --git a/core/src/main/ios/org/isoron/uhabits/IosLocaleHelper.kt b/core/src/main/ios/org/isoron/uhabits/IosLocaleHelper.kt index 985086cee..4937339f6 100644 --- a/core/src/main/ios/org/isoron/uhabits/IosLocaleHelper.kt +++ b/core/src/main/ios/org/isoron/uhabits/IosLocaleHelper.kt @@ -31,36 +31,6 @@ class IosLocaleHelper(private val log: Log) : LocaleHelper { val lang = if (pref.isEmpty()) "en-US" else pref[0] log.info("IosLocaleHelper", lang) return when { - lang.startsWith("ar") -> StringsArabic() - lang.startsWith("ca") -> StringsCatalan() - lang.startsWith("cs") -> StringsCzech() - lang.startsWith("da") -> StringsDanish() - lang.startsWith("de") -> StringsGerman() - lang.startsWith("el") -> StringsGreek() - lang.startsWith("es") -> StringsSpanish() - lang.startsWith("fi") -> StringsFinnish() - lang.startsWith("fr") -> StringsFrench() - lang.startsWith("he") -> StringsHebrew() - lang.startsWith("hi") -> StringsHindi() - lang.startsWith("hr") -> StringsCroatian() - lang.startsWith("hu") -> StringsHungarian() - lang.startsWith("id") -> StringsIndonesian() - lang.startsWith("it") -> StringsItalian() - lang.startsWith("ja") -> StringsJapanese() - lang.startsWith("ko") -> StringsKorean() - lang.startsWith("nb") -> StringsNorwegian() - lang.startsWith("nl") -> StringsDutch() - lang.startsWith("pl") -> StringsPolish() - lang.startsWith("pt-BR") -> StringsPortugueseBR() - lang.startsWith("pt") -> StringsPortuguesePT() - lang.startsWith("ro") -> StringsRomanian() - lang.startsWith("ru") -> StringsRussian() - lang.startsWith("sk") -> StringsSlovak() - lang.startsWith("sv") -> StringsSwedish() - lang.startsWith("tr") -> StringsTurkish() - lang.startsWith("vi") -> StringsVietnamese() - lang.startsWith("zh-Hans") -> StringsChineseCN() - lang.startsWith("zh-Hant") -> StringsChineseTW() else -> Strings() } } diff --git a/core/src/main/js/org/isoron/platform/io/JsStrings.kt b/core/src/main/js/org/isoron/platform/io/JsStrings.kt index 6abbc4675..2d583967c 100644 --- a/core/src/main/js/org/isoron/platform/io/JsStrings.kt +++ b/core/src/main/js/org/isoron/platform/io/JsStrings.kt @@ -19,6 +19,14 @@ package org.isoron.platform.io -actual fun sprintf(format: String, vararg args: Any?): String { - return js("vsprintf")(format, args) +actual fun format(format: String, arg: String): String { + return js("vsprintf")(format, arg) as String +} + +actual fun format(format: String, arg: Int): String { + return js("vsprintf")(format, arg) as String +} + +actual fun format(format: String, arg: Double): String { + return js("vsprintf")(format, arg) as String } \ No newline at end of file diff --git a/core/src/main/jvm/org/isoron/platform/io/Strings.kt b/core/src/main/jvm/org/isoron/platform/io/Strings.kt index de3b612c7..edb787583 100644 --- a/core/src/main/jvm/org/isoron/platform/io/Strings.kt +++ b/core/src/main/jvm/org/isoron/platform/io/Strings.kt @@ -19,6 +19,11 @@ package org.isoron.platform.io -actual fun sprintf(format: String, vararg args: Any?): String { - return String.format(format, *args) -} \ No newline at end of file +actual fun format(format: String, arg: String): String = + String.format(format, arg) + +actual fun format(format: String, arg: Int): String = + String.format(format, arg) + +actual fun format(format: String, arg: Double): String = + String.format(format, arg) \ No newline at end of file diff --git a/core/src/test/common/org/isoron/DependencyResolver.kt b/core/src/test/common/org/isoron/DependencyResolver.kt index 4d445f251..e7208049c 100644 --- a/core/src/test/common/org/isoron/DependencyResolver.kt +++ b/core/src/test/common/org/isoron/DependencyResolver.kt @@ -28,6 +28,7 @@ enum class Locale { } expect object DependencyResolver { + val ignoreViewTests: Boolean suspend fun getFileOpener(): FileOpener suspend fun getDatabase(): Database fun getDateFormatter(locale: Locale): LocalDateFormatter diff --git a/core/src/test/common/org/isoron/platform/io/StringsTest.kt b/core/src/test/common/org/isoron/platform/io/StringsTest.kt index b80683406..1573e620a 100644 --- a/core/src/test/common/org/isoron/platform/io/StringsTest.kt +++ b/core/src/test/common/org/isoron/platform/io/StringsTest.kt @@ -24,14 +24,14 @@ import kotlin.test.* class StringsTest { @Test fun testSprintf() { - assertEquals(" 5", sprintf("%3d", 5)) - assertEquals("005", sprintf("%03d", 5)) - assertEquals("005", sprintf("%03d", 5)) - assertEquals(" 45", sprintf("%3d", 45)) - assertEquals("145", sprintf("%3d", 145)) - assertEquals(" 9 9", sprintf("%3d%3d", 9, 9)) - assertEquals(" 13.42", sprintf("%8.2f", 13.419187263)) - assertEquals("00013.42", sprintf("%08.2f", 13.419187263)) - assertEquals("13.42 ", sprintf("%-8.2f", 13.419187263)) + assertEquals("hello world!", format("hello %s!", "world")) + assertEquals(" 5", format("%3d", 5)) + assertEquals("005", format("%03d", 5)) + assertEquals("005", format("%03d", 5)) + assertEquals(" 45", format("%3d", 45)) + assertEquals("145", format("%3d", 145)) + assertEquals(" 13.42", format("%8.2f", 13.419187263)) + assertEquals("00013.42", format("%08.2f", 13.419187263)) + assertEquals("13.42 ", format("%-8.2f", 13.419187263)) } } \ No newline at end of file diff --git a/core/src/test/common/org/isoron/uhabits/BaseViewTest.kt b/core/src/test/common/org/isoron/uhabits/BaseViewTest.kt index c548614d7..1e9b103e6 100644 --- a/core/src/test/common/org/isoron/uhabits/BaseViewTest.kt +++ b/core/src/test/common/org/isoron/uhabits/BaseViewTest.kt @@ -30,7 +30,10 @@ open class BaseViewTest { height: Int, expectedPath: String, component: Component) { - + if (DependencyResolver.ignoreViewTests) { + println("WARN: Ignoring BaseViewTest assertion") + return + } val canvas = DependencyResolver.createCanvas(width, height) component.draw(canvas) assertRenders(expectedPath, canvas) @@ -38,10 +41,14 @@ open class BaseViewTest { suspend fun assertRenders(path: String, canvas: Canvas) { - + if (DependencyResolver.ignoreViewTests) { + println("WARN: Ignoring BaseViewTest assertion") + return + } val actualImage = canvas.toImage() val failedActualPath = "/tmp/failed/${path}" - val failedExpectedPath = failedActualPath.replace(".png", ".expected.png") + val failedExpectedPath = failedActualPath.replace(".png", + ".expected.png") val failedDiffPath = failedActualPath.replace(".png", ".diff.png") val fileOpener = DependencyResolver.getFileOpener() val expectedFile = fileOpener.openResourceFile(path) diff --git a/core/src/test/ios/org/isoron/DependencyResolver.kt b/core/src/test/ios/org/isoron/DependencyResolver.kt index 2626eb341..4cd3fd7ed 100644 --- a/core/src/test/ios/org/isoron/DependencyResolver.kt +++ b/core/src/test/ios/org/isoron/DependencyResolver.kt @@ -27,6 +27,8 @@ import platform.CoreGraphics.* import platform.UIKit.* actual object DependencyResolver { + actual val ignoreViewTests = true + actual suspend fun getFileOpener(): FileOpener = IosFileOpener() actual fun getDateFormatter(locale: Locale): LocalDateFormatter { @@ -53,5 +55,4 @@ actual object DependencyResolver { db.migrateTo(LOOP_DATABASE_VERSION, fileOpener, log) return db } - } \ No newline at end of file diff --git a/core/src/test/js/org/isoron/DependencyResolver.kt b/core/src/test/js/org/isoron/DependencyResolver.kt index fa3e5e49c..3a28427e4 100644 --- a/core/src/test/js/org/isoron/DependencyResolver.kt +++ b/core/src/test/js/org/isoron/DependencyResolver.kt @@ -27,6 +27,8 @@ import org.w3c.dom.* import kotlin.browser.* actual object DependencyResolver { + actual val ignoreViewTests = false + var fileOpener: JsFileOpener? = null actual suspend fun getFileOpener(): FileOpener { diff --git a/core/src/test/jvm/org/isoron/DependencyResolver.kt b/core/src/test/jvm/org/isoron/DependencyResolver.kt index 7ea965d2e..9f5d1c093 100644 --- a/core/src/test/jvm/org/isoron/DependencyResolver.kt +++ b/core/src/test/jvm/org/isoron/DependencyResolver.kt @@ -24,12 +24,10 @@ import org.isoron.platform.io.* import org.isoron.platform.time.* import org.isoron.uhabits.* import java.awt.image.* -import java.io.* -import java.lang.Math.* -import java.nio.file.* -import javax.imageio.* actual object DependencyResolver { + actual val ignoreViewTests = false + actual suspend fun getFileOpener(): FileOpener = JavaFileOpener() actual suspend fun getDatabase(): Database { diff --git a/docs/BUILD.md b/docs/BUILD.md index effec48f2..29b6546a3 100644 --- a/docs/BUILD.md +++ b/docs/BUILD.md @@ -32,7 +32,7 @@ The repository will be downloaded to the directory `uhabits`. The Android files 1. Launch Android Studio and select "Open an existing Android Studio project". 2. When the IDE asks you for the project location, select `uhabits/android` and click "Ok". 3. Android Studio will spend some time indexing the project. When this is complete, click the toolbar icon "Sync Project with Gradle File", located near the right corner of the top toolbar. -4. The operation will likely fail several times due to missing Android SDK components. Each time it fails, click the link "Install missing platforms", "Instal build tools", etc, and try again. +4. The operation will likely fail several times due to missing Android SDK components. Each time it fails, click the link "Install missing platforms", "Install build tools", etc, and try again. 5. To test the application, create a virtual Android device using the menu "Tools" and "AVD Manager". The default options should work fine, but free to customize the device. 6. Click the menu "Run" and "uhabits-android". The application should launch. diff --git a/ios/Application/BridgingHeader.h b/ios/Application/BridgingHeader.h index 8bec8a96c..7032ff4f2 100644 --- a/ios/Application/BridgingHeader.h +++ b/ios/Application/BridgingHeader.h @@ -17,4 +17,4 @@ * with this program. If not, see . */ -#import +#import "LoopHabitTracker.h" diff --git a/ios/Application/Frontend/MainScreenController.swift b/ios/Application/Frontend/MainScreenController.swift index 2485caead..e50974aaf 100644 --- a/ios/Application/Frontend/MainScreenController.swift +++ b/ios/Application/Frontend/MainScreenController.swift @@ -76,7 +76,7 @@ class MainScreenCell : UITableViewCell { ring.setNeedsDisplay() for i in 0..