Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/stefan-niedermann/nextcloud-notes.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStefan Niedermann <info@niedermann.it>2021-09-17 14:24:06 +0300
committerStefan Niedermann <info@niedermann.it>2021-09-17 14:24:51 +0300
commitff2cab8f5c932ce50480728c008d83d66ce37f5b (patch)
tree72212515710393cd3351afbe4f65a2fd84edad48
parentb6afb118548475fb2f44aaf562d76d7cc9019d33 (diff)
#1348 Make translations easier by removing HTML markup from strings
Signed-off-by: Stefan Niedermann <info@niedermann.it>
-rw-r--r--app/src/main/java/it/niedermann/owncloud/notes/about/AboutFragmentContributingTab.java9
-rw-r--r--app/src/main/java/it/niedermann/owncloud/notes/about/AboutFragmentCreditsTab.java13
-rw-r--r--app/src/main/java/it/niedermann/owncloud/notes/about/AboutFragmentLicenseTab.java12
-rw-r--r--app/src/main/java/it/niedermann/owncloud/notes/shared/util/SupportUtil.java43
-rw-r--r--app/src/main/res/layout/fragment_about_license_tab.xml12
-rw-r--r--app/src/main/res/values/strings.xml21
6 files changed, 69 insertions, 41 deletions
diff --git a/app/src/main/java/it/niedermann/owncloud/notes/about/AboutFragmentContributingTab.java b/app/src/main/java/it/niedermann/owncloud/notes/about/AboutFragmentContributingTab.java
index 2e17e45d..90a9a3bc 100644
--- a/app/src/main/java/it/niedermann/owncloud/notes/about/AboutFragmentContributingTab.java
+++ b/app/src/main/java/it/niedermann/owncloud/notes/about/AboutFragmentContributingTab.java
@@ -1,6 +1,9 @@
package it.niedermann.owncloud.notes.about;
+import static it.niedermann.owncloud.notes.shared.util.SupportUtil.setTextWithURL;
+
import android.os.Bundle;
+import android.text.method.LinkMovementMethod;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
@@ -17,9 +20,9 @@ public class AboutFragmentContributingTab extends Fragment {
@Override
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
final var binding = FragmentAboutContributionTabBinding.inflate(inflater, container, false);
- SupportUtil.setHtml(binding.aboutSource, R.string.about_source, getString(R.string.url_source));
- SupportUtil.setHtml(binding.aboutIssues, R.string.about_issues, getString(R.string.url_issues));
- SupportUtil.setHtml(binding.aboutTranslate, R.string.about_translate, getString(R.string.url_translations));
+ setTextWithURL(binding.aboutSource, getResources(), R.string.about_source, R.string.url_source, R.string.url_source);
+ setTextWithURL(binding.aboutIssues, getResources(), R.string.about_issues, R.string.url_issues, R.string.url_issues);
+ setTextWithURL(binding.aboutTranslate, getResources(), R.string.about_translate, R.string.url_translations, R.string.url_translations);
return binding.getRoot();
}
} \ No newline at end of file
diff --git a/app/src/main/java/it/niedermann/owncloud/notes/about/AboutFragmentCreditsTab.java b/app/src/main/java/it/niedermann/owncloud/notes/about/AboutFragmentCreditsTab.java
index f92ca9ee..028bfa4e 100644
--- a/app/src/main/java/it/niedermann/owncloud/notes/about/AboutFragmentCreditsTab.java
+++ b/app/src/main/java/it/niedermann/owncloud/notes/about/AboutFragmentCreditsTab.java
@@ -1,6 +1,11 @@
package it.niedermann.owncloud.notes.about;
+import static it.niedermann.owncloud.notes.shared.util.SupportUtil.setTextWithURL;
+import static it.niedermann.owncloud.notes.shared.util.SupportUtil.strong;
+import static it.niedermann.owncloud.notes.shared.util.SupportUtil.url;
+
import android.os.Bundle;
+import android.text.method.LinkMovementMethod;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
@@ -11,16 +16,16 @@ import androidx.fragment.app.Fragment;
import it.niedermann.owncloud.notes.BuildConfig;
import it.niedermann.owncloud.notes.R;
import it.niedermann.owncloud.notes.databinding.FragmentAboutCreditsTabBinding;
-import it.niedermann.owncloud.notes.shared.util.SupportUtil;
public class AboutFragmentCreditsTab extends Fragment {
@Override
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
final var binding = FragmentAboutCreditsTabBinding.inflate(inflater, container, false);
- SupportUtil.setHtml(binding.aboutVersion, R.string.about_version, "v" + BuildConfig.VERSION_NAME);
- SupportUtil.setHtml(binding.aboutMaintainer, R.string.about_maintainer);
- SupportUtil.setHtml(binding.aboutTranslators, R.string.about_translators_transifex, getString(R.string.url_translations));
+ binding.aboutVersion.setText(getString(R.string.about_version, strong(BuildConfig.VERSION_NAME)));
+ binding.aboutMaintainer.setText(url(getString(R.string.about_maintainer), getString(R.string.url_maintainer)));
+ binding.aboutMaintainer.setMovementMethod(new LinkMovementMethod());
+ setTextWithURL(binding.aboutTranslators, getResources(), R.string.about_translators_transifex, R.string.about_translators_transifex_label, R.string.url_translations);
return binding.getRoot();
}
} \ No newline at end of file
diff --git a/app/src/main/java/it/niedermann/owncloud/notes/about/AboutFragmentLicenseTab.java b/app/src/main/java/it/niedermann/owncloud/notes/about/AboutFragmentLicenseTab.java
index da8cbbd4..10cc02c7 100644
--- a/app/src/main/java/it/niedermann/owncloud/notes/about/AboutFragmentLicenseTab.java
+++ b/app/src/main/java/it/niedermann/owncloud/notes/about/AboutFragmentLicenseTab.java
@@ -1,5 +1,7 @@
package it.niedermann.owncloud.notes.about;
+import static it.niedermann.owncloud.notes.shared.util.SupportUtil.setTextWithURL;
+
import android.content.Intent;
import android.content.res.ColorStateList;
import android.net.Uri;
@@ -17,21 +19,17 @@ import it.niedermann.owncloud.notes.R;
import it.niedermann.owncloud.notes.branding.BrandedFragment;
import it.niedermann.owncloud.notes.branding.BrandingUtil;
import it.niedermann.owncloud.notes.databinding.FragmentAboutLicenseTabBinding;
-import it.niedermann.owncloud.notes.shared.util.SupportUtil;
public class AboutFragmentLicenseTab extends BrandedFragment {
private FragmentAboutLicenseTabBinding binding;
- private void openLicense() {
- startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(getString(R.string.url_license))));
- }
-
@Override
public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
binding = FragmentAboutLicenseTabBinding.inflate(inflater, container, false);
- binding.aboutAppLicenseButton.setOnClickListener((v) -> openLicense());
- SupportUtil.setHtml(binding.aboutIconsDisclaimer, R.string.about_icons_disclaimer, getString(R.string.about_app_icon_author));
+ setTextWithURL(binding.aboutIconsDisclaimerAppIcon, getResources(), R.string.about_icons_disclaimer_app_icon, R.string.about_app_icon_author_link_label, R.string.url_about_icon_author);
+ setTextWithURL(binding.aboutIconsDisclaimerMdiIcons, getResources(), R.string.about_icons_disclaimer_mdi_icons, R.string.about_icons_disclaimer_mdi, R.string.url_about_icons_disclaimer_mdi);
+ binding.aboutAppLicenseButton.setOnClickListener((v) -> startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse(getString(R.string.url_license)))));
return binding.getRoot();
}
diff --git a/app/src/main/java/it/niedermann/owncloud/notes/shared/util/SupportUtil.java b/app/src/main/java/it/niedermann/owncloud/notes/shared/util/SupportUtil.java
index 27fec716..d914c13f 100644
--- a/app/src/main/java/it/niedermann/owncloud/notes/shared/util/SupportUtil.java
+++ b/app/src/main/java/it/niedermann/owncloud/notes/shared/util/SupportUtil.java
@@ -1,31 +1,42 @@
package it.niedermann.owncloud.notes.shared.util;
+import android.content.res.Resources;
+import android.graphics.Typeface;
+import android.text.Spannable;
+import android.text.SpannableString;
+import android.text.Spanned;
import android.text.method.LinkMovementMethod;
+import android.text.style.StyleSpan;
+import android.text.style.URLSpan;
import android.widget.TextView;
import androidx.annotation.NonNull;
-import androidx.core.text.HtmlCompat;
+import androidx.annotation.StringRes;
-/**
- * Some helper functionality in alike the Android support library.
- * Currently, it offers methods for working with HTML string resources.
- */
public class SupportUtil {
private SupportUtil() {
throw new UnsupportedOperationException("Do not instantiate this util class.");
}
- /**
- * Fills a {@link TextView} with HTML content and activates links in that {@link TextView}.
- *
- * @param view The {@link TextView} which should be filled.
- * @param stringId The string resource containing HTML tags (escaped by <code>&lt;</code>)
- * @param formatArgs Arguments for the string resource.
- */
- public static void setHtml(@NonNull TextView view, int stringId, Object... formatArgs) {
- view.setText(HtmlCompat.fromHtml(
- view.getResources().getString(stringId, formatArgs), HtmlCompat.FROM_HTML_MODE_LEGACY));
- view.setMovementMethod(LinkMovementMethod.getInstance());
+ public static SpannableString strong(@NonNull CharSequence text) {
+ final var spannable = new SpannableString(text);
+ spannable.setSpan(new StyleSpan(Typeface.BOLD), 0, spannable.length(), 0);
+ return spannable;
+ }
+
+ public static SpannableString url(@NonNull CharSequence text, @NonNull String target) {
+ final var spannable = new SpannableString(text);
+ spannable.setSpan(new URLSpan(target), 0, spannable.length(), Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
+ return spannable;
+ }
+
+ public static void setTextWithURL(@NonNull TextView textView, @NonNull Resources resources, @StringRes int containerTextId, @StringRes int linkLabelId, @StringRes int urlId) {
+ final String linkLabel = resources.getString(linkLabelId);
+ final String finalText = resources.getString(containerTextId, linkLabel);
+ final var spannable = new SpannableString(finalText);
+ spannable.setSpan(new URLSpan(resources.getString(urlId)), finalText.indexOf(linkLabel), finalText.indexOf(linkLabel) + linkLabel.length(), Spanned.SPAN_EXCLUSIVE_EXCLUSIVE);
+ textView.setText(spannable);
+ textView.setMovementMethod(new LinkMovementMethod());
}
}
diff --git a/app/src/main/res/layout/fragment_about_license_tab.xml b/app/src/main/res/layout/fragment_about_license_tab.xml
index 6afaa763..24e6163f 100644
--- a/app/src/main/res/layout/fragment_about_license_tab.xml
+++ b/app/src/main/res/layout/fragment_about_license_tab.xml
@@ -39,11 +39,17 @@
android:text="@string/about_icons_disclaimer_title" />
<TextView
- android:id="@+id/about_icons_disclaimer"
- style="?android:attr/editTextPreferenceStyle"
+ android:id="@+id/about_icons_disclaimer_app_icon"
+ android:layout_width="match_parent"
+ android:layout_height="wrap_content"
+ android:padding="10dp"
+ android:text="@string/about_icons_disclaimer_app_icon" />
+
+ <TextView
+ android:id="@+id/about_icons_disclaimer_mdi_icons"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:padding="10dp"
- android:text="@string/about_icons_disclaimer" />
+ android:text="@string/about_icons_disclaimer_mdi_icons" />
</LinearLayout>
</ScrollView> \ No newline at end of file
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index d5b03716..4977b691 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -59,29 +59,35 @@
<string name="url_issues" translatable="false">https://github.com/stefan-niedermann/nextcloud-notes/issues/new/choose</string>
<string name="url_license" translatable="false">https://github.com/stefan-niedermann/nextcloud-notes/blob/master/LICENSE</string>
<string name="url_translations" translatable="false">https://www.transifex.com/nextcloud/nextcloud/</string>
+ <string name="url_maintainer" translatable="false">https://www.niedermann.it/</string>
+ <string name="url_about_icon_author" translatable="false">https://github.com/nextcloud/notes/blob/76d15214f80f2bf7ea08427bff73ad145128f090/img/notes.svg</string>
+ <string name="url_about_icons_disclaimer_mdi" translatable="false">https://materialdesignicons.com/</string>
<string name="about_version_title">Version</string>
<string name="about_version">You are currently using &lt;strong>%1$s&lt;/strong></string>
<string name="about_maintainer_title">Maintainer</string>
- <string name="about_maintainer" translatable="false">&lt;a href="https://www.niedermann.it/">Niedermann IT-Dienstleistungen&lt;/a></string>
+ <string name="about_maintainer" translatable="false">Niedermann IT-Dienstleistungen</string>
<string name="about_developers_title">Developers</string>
<string name="about_developers" translatable="false">Stefan Niedermann, Kristof Hamann, HeaDBanGer84, Felix Edelmann, Daniel Bailey</string>
<string name="about_translators_title">Translators</string>
- <string name="about_translators_transifex">Nextcloud community on &lt;a href="%1$s">Transifex&lt;/a></string>
+ <string name="about_translators_transifex">Nextcloud community on %1$s</string>
+ <string name="about_translators_transifex_label" translatable="false">Transifex</string>
<string name="about_testers_title">Testers</string>
<string name="about_testers" translatable="false">Jan C. Borchardt</string>
<string name="about_source_title">Source code</string>
- <string name="about_source">This project is hosted on GitHub: &lt;a href="%1$s">%1$s&lt;/a></string>
+ <string name="about_source">This project is hosted on GitHub: %1$s</string>
<string name="about_issues_title">Issues</string>
- <string name="about_issues">You can report bugs, enhancement proposals and feature requests at the GitHub issue tracker: &lt;a href="%1$s">%1$s&lt;/a></string>
+ <string name="about_issues">You can report bugs, enhancement proposals and feature requests at the GitHub issue tracker: %1$s</string>
<string name="about_translate_title">Translate</string>
- <string name="about_translate">Join the Nextcloud team on Transifex and help us to translate this app: &lt;a href="%1$s">%1$s&lt;/a></string>
+ <string name="about_translate">Join the Nextcloud team on Transifex and help us to translate this app: %1$s</string>
<string name="about_app_license_title">App license</string>
<string name="about_app_license">This application is licensed under the GNU GENERAL PUBLIC LICENSE v3+.</string>
<string name="about_app_license_button">View license</string>
- <string name="about_app_icon_author" translatable="false">&lt;a href="http://jancborchardt.net/">Jan C. Borchardt&lt;/a> (&lt;a href="https://github.com/nextcloud/notes/blob/76d15214f80f2bf7ea08427bff73ad145128f090/img/notes.svg">GitHub&lt;/a>)</string>
+ <string name="about_app_icon_author_link_label" translatable="false">GitHub</string>
<string name="about_icons_disclaimer_title">Icons</string>
- <string name="about_icons_disclaimer">&lt;p>Original icon made by %1$s.&lt;/p>&lt;p>All further icons used by this app are &lt;a href="https://materialdesignicons.com/">Material Design Icons&lt;/a> made by Google Inc. and licensed under the Apache 2.0 License.&lt;/p></string>
+ <string name="about_icons_disclaimer_app_icon">For the original icon see %1$s.</string>
+ <string name="about_icons_disclaimer_mdi_icons">All further icons used by this app are %1$s made by Google Inc. and licensed under the Apache 2.0 License.</string>
+ <string name="about_icons_disclaimer_mdi">Material Design Icons</string>
<string name="about_credits_tab_title">Credits</string>
<string name="about_contribution_tab_title">Contribution</string>
<string name="about_license_tab_title">License</string>
@@ -298,7 +304,6 @@
<string name="simple_next">Next</string>
<string name="simple_prev">Previous</string>
<string name="simple_backup">Backup</string>
- <string name="simple_repair">Repair</string>
<string name="backup">We detected an irrecoverably state of the app. Please backup your unsynchronized changes and clear the storage of the Notes app.</string>
<string name="settings_notes_path_description">Folder to store your notes in your Nextcloud</string>
<string-array name="settings_file_suffixes">