Compare commits

...

8 commits

Author SHA1 Message Date
toolatebot
232046e986 Update translation files
Updated by "Cleanup translation files" add-on in Weblate.

Translation: jrpie-Launcher/Launcher
Translate-URL: https://toolate.othing.xyz/projects/jrpie-launcher/launcher/
2025-03-16 00:07:18 +00:00
toolatebot
ff108ee323 Update translation files
Updated by "Cleanup translation files" add-on in Weblate.

Translation: jrpie-Launcher/Launcher
Translate-URL: https://toolate.othing.xyz/projects/jrpie-launcher/launcher/
2025-03-16 00:07:18 +00:00
anmoti
943867d938 Translated using Weblate (Japanese)
Currently translated at 78.4% (200 of 255 strings)

Translation: jrpie-Launcher/Launcher
Translate-URL: https://toolate.othing.xyz/projects/jrpie-launcher/launcher/ja/
2025-03-16 00:07:18 +00:00
anmoti
59f4a29044 Translated using Weblate (Japanese)
Currently translated at 17.6% (3 of 17 strings)

Translation: jrpie-Launcher/metadata
Translate-URL: https://toolate.othing.xyz/projects/jrpie-launcher/metadata/ja/
2025-03-16 00:07:18 +00:00
class0068
bd70b822cf Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 98.4% (251 of 255 strings)

Translation: jrpie-Launcher/Launcher
Translate-URL: https://toolate.othing.xyz/projects/jrpie-launcher/launcher/zh_Hans/
2025-03-16 00:07:18 +00:00
72f9c0595f
handle MotionEvent.ACTION_CANCEL in TouchGestureDetector (see #126)
Some checks are pending
Android CI / build (push) Waiting to run
2025-03-15 19:23:51 +01:00
75b22400c5
try to fix #125 2025-03-15 17:24:19 +01:00
c1511cd475
merge #124 - improve tutorial
Some checks are pending
Android CI / build (push) Waiting to run
* Add new "app list" section
* Rename fragments
* Replace screenshots
* Replace ViewPager by ViewPager2
* Add navigation buttons

Co-authored-by: Luke Wass <wassupluke@gmail.com>
2025-03-15 03:26:37 +01:00
37 changed files with 613 additions and 132 deletions

View file

@ -87,24 +87,40 @@ class TouchGestureDetector(
}
private var paths = HashMap<Int, PointerPath>()
private var gestureIsLongClick = false
/* Set when
* - the longPressHandler has detected this gesture as a long press
* - the gesture was cancelled by MotionEvent.ACTION_CANCEL
* In any case, the current gesture should be ignored by further detection logic.
*/
private var cancelled = false
private var lastTappedTime = 0L
private var lastTappedLocation: Vector? = null
fun onTouchEvent(event: MotionEvent) {
if (event.actionMasked == MotionEvent.ACTION_CANCEL) {
synchronized(this@TouchGestureDetector) {
cancelled = true
}
}
val pointerIdToIndex =
(0..<event.pointerCount).associateBy { event.getPointerId(it) }
if (event.actionMasked == MotionEvent.ACTION_DOWN) {
synchronized(this@TouchGestureDetector) {
paths = HashMap()
gestureIsLongClick = false
cancelled = false
}
longPressHandler.postDelayed({
synchronized(this@TouchGestureDetector) {
if (cancelled) {
return@postDelayed
}
if (paths.entries.size == 1 && paths.entries.firstOrNull()?.value?.isTap() == true) {
gestureIsLongClick = true
cancelled = true
Gesture.LONG_CLICK.invoke(context)
}
}
@ -142,7 +158,7 @@ class TouchGestureDetector(
// if the long press handler is still running, kill it
longPressHandler.removeCallbacksAndMessages(null)
// if the gesture was already detected as a long click, there is nothing to do
if (gestureIsLongClick) {
if (cancelled) {
return
}
}

View file

@ -4,23 +4,26 @@ import android.content.Intent
import android.content.res.Resources
import android.os.Build
import android.os.Bundle
import android.view.View
import android.window.OnBackInvokedDispatcher
import androidx.appcompat.app.AppCompatActivity
import androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentManager
import androidx.fragment.app.FragmentPagerAdapter
import androidx.viewpager.widget.ViewPager
import com.google.android.material.tabs.TabLayout
import de.jrpie.android.launcher.R
import androidx.fragment.app.FragmentActivity
import androidx.viewpager2.adapter.FragmentStateAdapter
import androidx.viewpager2.widget.ViewPager2
import com.google.android.material.tabs.TabLayoutMediator
import de.jrpie.android.launcher.REQUEST_CHOOSE_APP
import de.jrpie.android.launcher.databinding.TutorialBinding
import de.jrpie.android.launcher.preferences.LauncherPreferences
import de.jrpie.android.launcher.saveListActivityChoice
import de.jrpie.android.launcher.ui.UIObject
import de.jrpie.android.launcher.ui.tutorial.tabs.TutorialFragmentConcept
import de.jrpie.android.launcher.ui.tutorial.tabs.TutorialFragmentFinish
import de.jrpie.android.launcher.ui.tutorial.tabs.TutorialFragmentSetup
import de.jrpie.android.launcher.ui.tutorial.tabs.TutorialFragmentStart
import de.jrpie.android.launcher.ui.tutorial.tabs.TutorialFragmentUsage
import de.jrpie.android.launcher.ui.blink
import de.jrpie.android.launcher.ui.tutorial.tabs.TutorialFragment0Start
import de.jrpie.android.launcher.ui.tutorial.tabs.TutorialFragment1Concept
import de.jrpie.android.launcher.ui.tutorial.tabs.TutorialFragment2Usage
import de.jrpie.android.launcher.ui.tutorial.tabs.TutorialFragment3AppList
import de.jrpie.android.launcher.ui.tutorial.tabs.TutorialFragment4Setup
import de.jrpie.android.launcher.ui.tutorial.tabs.TutorialFragment5Finish
/**
* The [TutorialActivity] is displayed automatically on new installations.
@ -31,10 +34,16 @@ import de.jrpie.android.launcher.ui.tutorial.tabs.TutorialFragmentUsage
*/
class TutorialActivity : AppCompatActivity(), UIObject {
private lateinit var binding: TutorialBinding
override fun onCreate(savedInstanceState: Bundle?) {
super<AppCompatActivity>.onCreate(savedInstanceState)
super<UIObject>.onCreate()
// Initialise layout
binding = TutorialBinding.inflate(layoutInflater)
setContentView(binding.root)
// Handle back key / gesture on Android 13+
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
onBackInvokedDispatcher.registerOnBackInvokedCallback(
@ -48,15 +57,51 @@ class TutorialActivity : AppCompatActivity(), UIObject {
}
}
// Initialise layout
setContentView(R.layout.tutorial)
// set up tabs and swiping in settings
val sectionsPagerAdapter = TutorialSectionsPagerAdapter(supportFragmentManager)
val viewPager: ViewPager = findViewById(R.id.tutorial_viewpager)
viewPager.adapter = sectionsPagerAdapter
val tabs: TabLayout = findViewById(R.id.tutorial_tabs)
tabs.setupWithViewPager(viewPager)
val sectionsPagerAdapter = TutorialSectionsPagerAdapter(this)
binding.tutorialViewpager.apply {
adapter = sectionsPagerAdapter
currentItem = 0
registerOnPageChangeCallback(object : ViewPager2.OnPageChangeCallback() {
override fun onPageSelected(position: Int) {
binding.tutorialButtonNext.apply {
val lastItem = sectionsPagerAdapter.itemCount - 1
visibility = if (position == lastItem) {
View.INVISIBLE
} else {
View.VISIBLE
}
if (position == 0) {
blink()
} else {
clearAnimation()
}
}
binding.tutorialButtonBack.apply {
visibility = if (position == 0) {
View.INVISIBLE
} else {
View.VISIBLE
}
}
}
})
}
TabLayoutMediator(binding.tutorialTabs, binding.tutorialViewpager) { _, _ -> }.attach()
binding.tutorialButtonNext.setOnClickListener {
binding.tutorialViewpager.apply {
setCurrentItem(
(currentItem + 1).coerceAtMost(sectionsPagerAdapter.itemCount - 1),
true
)
}
}
binding.tutorialButtonBack.setOnClickListener {
binding.tutorialViewpager.apply {
setCurrentItem((currentItem - 1).coerceAtLeast(0), true)
}
}
}
override fun getTheme(): Resources.Theme {
@ -89,26 +134,22 @@ class TutorialActivity : AppCompatActivity(), UIObject {
*
* Tabs: (Start | Concept | Usage | Setup | Finish)
*/
class TutorialSectionsPagerAdapter(fm: FragmentManager) :
FragmentPagerAdapter(fm, BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT) {
class TutorialSectionsPagerAdapter(activity: FragmentActivity) :
FragmentStateAdapter(activity) {
override fun getItem(position: Int): Fragment {
override fun getItemCount(): Int {
return 6
}
override fun createFragment(position: Int): Fragment {
return when (position) {
0 -> TutorialFragmentStart()
1 -> TutorialFragmentConcept()
2 -> TutorialFragmentUsage()
3 -> TutorialFragmentSetup()
4 -> TutorialFragmentFinish()
0 -> TutorialFragment0Start()
1 -> TutorialFragment1Concept()
2 -> TutorialFragment2Usage()
3 -> TutorialFragment3AppList()
4 -> TutorialFragment4Setup()
5 -> TutorialFragment5Finish()
else -> Fragment()
}
}
/* We don't use titles here, as we have the dots */
override fun getPageTitle(position: Int): CharSequence {
return ""
}
override fun getCount(): Int {
return 5
}
}

View file

@ -5,24 +5,22 @@ import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.fragment.app.Fragment
import de.jrpie.android.launcher.databinding.TutorialStartBinding
import de.jrpie.android.launcher.databinding.Tutorial0StartBinding
import de.jrpie.android.launcher.ui.UIObject
import de.jrpie.android.launcher.ui.blink
/**
* The [TutorialFragmentStart] is a used as a tab in the TutorialActivity.
* The [TutorialFragment0Start] is a used as a tab in the TutorialActivity.
*
* It displays info about the app and gets the user into the tutorial
*/
class TutorialFragmentStart : Fragment(), UIObject {
class TutorialFragment0Start : Fragment(), UIObject {
private lateinit var binding: TutorialStartBinding
private lateinit var binding: Tutorial0StartBinding
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View {
binding = TutorialStartBinding.inflate(inflater, container, false)
binding.tutorialStartIconRight.blink()
binding = Tutorial0StartBinding.inflate(inflater, container, false)
return binding.root
}

View file

@ -6,22 +6,22 @@ import android.view.View
import android.view.ViewGroup
import androidx.fragment.app.Fragment
import de.jrpie.android.launcher.BuildConfig
import de.jrpie.android.launcher.databinding.TutorialConceptBinding
import de.jrpie.android.launcher.databinding.Tutorial1ConceptBinding
import de.jrpie.android.launcher.ui.UIObject
/**
* The [TutorialFragmentConcept] is a used as a tab in the TutorialActivity.
* The [TutorialFragment1Concept] is a used as a tab in the TutorialActivity.
*
* It is used to display info about Launchers concept (open source, efficiency ...)
*/
class TutorialFragmentConcept : Fragment(), UIObject {
private lateinit var binding: TutorialConceptBinding
class TutorialFragment1Concept : Fragment(), UIObject {
private lateinit var binding: Tutorial1ConceptBinding
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View {
binding = TutorialConceptBinding.inflate(inflater, container, false)
binding = Tutorial1ConceptBinding.inflate(inflater, container, false)
binding.tutorialConceptBadgeVersion.text = BuildConfig.VERSION_NAME
return binding.root
}

View file

@ -9,17 +9,17 @@ import de.jrpie.android.launcher.R
import de.jrpie.android.launcher.ui.UIObject
/**
* The [TutorialFragmentUsage] is a used as a tab in the TutorialActivity.
* The [TutorialFragment2Usage] is a used as a tab in the TutorialActivity.
*
* Tells the user how his screen will look and how the app can be used
*/
class TutorialFragmentUsage : Fragment(), UIObject {
class TutorialFragment2Usage : Fragment(), UIObject {
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
return inflater.inflate(R.layout.tutorial_usage, container, false)
return inflater.inflate(R.layout.tutorial_2_usage, container, false)
}
override fun onStart() {

View file

@ -0,0 +1,30 @@
package de.jrpie.android.launcher.ui.tutorial.tabs
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.fragment.app.Fragment
import de.jrpie.android.launcher.R
import de.jrpie.android.launcher.ui.UIObject
/**
* The [TutorialFragment3AppList] is a used as a tab in the TutorialActivity.
*
* Tells the user how his screen will look and how the app can be used
*/
class TutorialFragment3AppList : Fragment(), UIObject {
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
return inflater.inflate(R.layout.tutorial_3_app_list, container, false)
}
override fun onStart() {
super<Fragment>.onStart()
super<UIObject>.onStart()
}
}

View file

@ -9,17 +9,17 @@ import de.jrpie.android.launcher.R
import de.jrpie.android.launcher.ui.UIObject
/**
* The [TutorialFragmentSetup] is a used as a tab in the TutorialActivity.
* The [TutorialFragment4Setup] is a used as a tab in the TutorialActivity.
*
* It is used to display info in the tutorial
*/
class TutorialFragmentSetup : Fragment(), UIObject {
class TutorialFragment4Setup : Fragment(), UIObject {
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
return inflater.inflate(R.layout.tutorial_setup, container, false)
return inflater.inflate(R.layout.tutorial_4_setup, container, false)
}
override fun onStart() {

View file

@ -6,25 +6,25 @@ import android.view.View
import android.view.ViewGroup
import androidx.fragment.app.Fragment
import de.jrpie.android.launcher.BuildConfig.VERSION_CODE
import de.jrpie.android.launcher.databinding.TutorialFinishBinding
import de.jrpie.android.launcher.databinding.Tutorial5FinishBinding
import de.jrpie.android.launcher.preferences.LauncherPreferences
import de.jrpie.android.launcher.setDefaultHomeScreen
import de.jrpie.android.launcher.ui.UIObject
/**
* The [TutorialFragmentFinish] is a used as a tab in the TutorialActivity.
* The [TutorialFragment5Finish] is a used as a tab in the TutorialActivity.
*
* It is used to display further resources and let the user start Launcher
*/
class TutorialFragmentFinish : Fragment(), UIObject {
class TutorialFragment5Finish : Fragment(), UIObject {
private lateinit var binding: TutorialFinishBinding
private lateinit var binding: Tutorial5FinishBinding
override fun onCreateView(
inflater: LayoutInflater, container: ViewGroup?,
savedInstanceState: Bundle?
): View {
binding = TutorialFinishBinding.inflate(inflater, container, false)
binding = Tutorial5FinishBinding.inflate(inflater, container, false)
return binding.root
}

View file

@ -0,0 +1,11 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="?android:textColor"
android:pathData="M15.41,7.41L14,6l-6,6 6,6 1.41,-1.41L10.83,12z" />
</vector>

View file

@ -0,0 +1,11 @@
<vector xmlns:android="http://schemas.android.com/apk/res/android"
android:width="24dp"
android:height="24dp"
android:viewportWidth="24"
android:viewportHeight="24">
<path
android:fillColor="?android:textColor"
android:pathData="M10,6L8.59,7.41 13.17,12l-4.58,4.59L10,18l6,-6z" />
</vector>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 159 KiB

View file

@ -0,0 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- https://stackoverflow.com/a/30692466 -->
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle">
<corners android:radius="10dp" />
</shape>

Binary file not shown.

After

Width:  |  Height:  |  Size: 124 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

View file

@ -15,18 +15,21 @@
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:src="@mipmap/ic_launcher_round"
tools:ignore="ContentDescription" />
<TextView
android:id="@+id/list_apps_row_name"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="60sp"
android:layout_marginStart="20sp"
android:gravity="start"
android:text=""
android:textSize="20sp"
tools:text="@string/app_name"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintStart_toEndOf="@id/list_apps_row_icon"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>

View file

@ -15,6 +15,7 @@
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintEnd_toEndOf="parent"
tools:src="@mipmap/ic_launcher_round"
tools:ignore="ContentDescription" />
<TextView
@ -25,7 +26,7 @@
android:paddingTop="5dp"
android:text=""
android:textSize="11sp"
tools:text="some app"
tools:text="@string/app_name"
app:layout_constraintTop_toBottomOf="@id/list_apps_row_icon"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintEnd_toEndOf="parent"

View file

@ -32,6 +32,6 @@
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:text="some app" />
tools:text="@string/app_name" />
</androidx.constraintlayout.widget.ConstraintLayout>

View file

@ -10,7 +10,7 @@
tools:context=".ui.tutorial.TutorialActivity">
<androidx.viewpager.widget.ViewPager
<androidx.viewpager2.widget.ViewPager2
android:id="@+id/tutorial_viewpager"
android:layout_width="0dp"
android:layout_height="0dp"
@ -22,15 +22,37 @@
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintVertical_bias="0.0" />
<ImageView
android:id="@+id/tutorial_button_back"
android:layout_width="50dp"
android:layout_height="50dp"
android:gravity="center"
android:alpha="0.5"
android:src="@drawable/baseline_navigate_before_24"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/tutorial_viewpager" />
<com.google.android.material.tabs.TabLayout
android:id="@+id/tutorial_tabs"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_width="0dp"
android:layout_height="50dp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toStartOf="@+id/tutorial_button_next"
app:layout_constraintStart_toEndOf="@+id/tutorial_button_back"
app:tabBackground="@drawable/tutorial_tab_selector"
app:tabGravity="center"
app:tabIndicatorHeight="0dp"
app:tabIndicatorHeight="0dp" />
<ImageView
android:id="@+id/tutorial_button_next"
android:layout_width="50dp"
android:layout_height="50dp"
android:gravity="center"
android:src="@drawable/baseline_navigate_next_24"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" />
app:layout_constraintTop_toBottomOf="@+id/tutorial_viewpager" />
</androidx.constraintlayout.widget.ConstraintLayout>

View file

@ -8,7 +8,7 @@
android:paddingRight="32sp"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".ui.tutorial.tabs.TutorialFragmentStart">
tools:context=".ui.tutorial.tabs.TutorialFragment0Start">
<TextView
android:id="@+id/tutorial_start_text"
@ -21,16 +21,4 @@
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/tutorial_start_icon_right"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text=">>>>>>"
android:textSize="64sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/tutorial_start_text" />
</androidx.constraintlayout.widget.ConstraintLayout>

View file

@ -8,7 +8,7 @@
android:paddingRight="32sp"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".ui.tutorial.tabs.TutorialFragmentConcept">
tools:context=".ui.tutorial.tabs.TutorialFragment1Concept">
<TextView
android:id="@+id/tutorial_concept_title"
@ -28,11 +28,10 @@
android:gravity="center"
android:text="@string/tutorial_concept_text"
android:textSize="18sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/tutorial_concept_title"
app:layout_constraintVertical_bias="0.19999999" />
app:layout_constraintBottom_toTopOf="@id/tutorial_concept_badge_version_label"/>
<TextView
android:id="@+id/tutorial_concept_text_2"
@ -60,6 +59,22 @@
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/tutorial_concept_text"
tools:text="0.0.7"
tools:ignore="ContentDescription" />
<TextView
android:id="@+id/tutorial_concept_badge_version_label"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginStart="32dp"
android:layout_marginEnd="32dp"
android:gravity="center"
android:textSize="18sp"
android:text="@string/tutorial_concept_label_version"
app:layout_constraintBottom_toTopOf="@+id/tutorial_concept_badge_version"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="parent"
tools:ignore="ContentDescription" />
</androidx.constraintlayout.widget.ConstraintLayout>

View file

@ -7,7 +7,7 @@
android:layout_height="match_parent"
android:paddingLeft="32sp"
android:paddingRight="32sp"
tools:context=".ui.tutorial.tabs.TutorialFragmentUsage">
tools:context=".ui.tutorial.tabs.TutorialFragment2Usage">
<TextView
android:id="@+id/tutorial_usage_title"
@ -39,12 +39,12 @@
android:layout_width="0dp"
android:layout_height="0dp"
android:scaleType="centerInside"
android:src="@drawable/home_round_screen"
android:src="@drawable/tutorial_home_screen"
app:layout_constraintBottom_toTopOf="@id/tutorial_usage_text_2"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="@+id/tutorial_usage_text"
app:layout_constraintTop_toBottomOf="@id/tutorial_usage_text"
app:srcCompat="@drawable/home_round_screen"
app:srcCompat="@drawable/tutorial_home_screen"
tools:ignore="ContentDescription" />
<TextView

View file

@ -0,0 +1,64 @@
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/tutorial_usage_container"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingLeft="32sp"
android:paddingRight="32sp"
tools:context=".ui.tutorial.tabs.TutorialFragment3AppList">
<TextView
android:id="@+id/tutorial_app_list_title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:text="@string/tutorial_app_list_title"
android:textSize="30sp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<TextView
android:id="@+id/tutorial_app_list_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="16dp"
android:layout_marginBottom="32dp"
android:gravity="center"
android:text="@string/tutorial_app_list_text"
android:textSize="18sp"
app:layout_constraintBottom_toTopOf="@+id/tutorial_app_list_screen"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/tutorial_app_list_title" />
<ImageView
android:id="@+id/tutorial_app_list_screen"
android:layout_width="0dp"
android:layout_height="0dp"
android:scaleType="centerInside"
android:src="@drawable/tutorial_app_list"
app:layout_constraintBottom_toTopOf="@id/tutorial_app_list_text_2"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="@+id/tutorial_app_list_text"
app:layout_constraintTop_toBottomOf="@id/tutorial_app_list_text"
app:srcCompat="@drawable/tutorial_app_list"
tools:ignore="ContentDescription" />
<TextView
android:id="@+id/tutorial_app_list_text_2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="32dp"
android:layout_marginBottom="16dp"
android:gravity="center"
android:text="@string/tutorial_app_list_text_2"
android:textSize="18sp"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/tutorial_app_list_screen" />
</androidx.constraintlayout.widget.ConstraintLayout>

View file

@ -8,7 +8,7 @@
android:layout_height="match_parent"
android:paddingLeft="32sp"
android:paddingRight="32sp"
tools:context=".ui.tutorial.tabs.TutorialFragmentSetup">
tools:context=".ui.tutorial.tabs.TutorialFragment4Setup">
<TextView
android:id="@+id/tutorial_setup_title"

View file

@ -7,7 +7,7 @@
android:paddingRight="32sp"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".ui.tutorial.tabs.TutorialFragmentFinish">
tools:context=".ui.tutorial.tabs.TutorialFragment5Finish">
<TextView
android:id="@+id/tutorial_finish_title"
@ -24,6 +24,7 @@
android:id="@+id/tutorial_finish_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:gravity="center"
android:text="@string/tutorial_finish_text"
android:textSize="18sp"
app:layout_constraintBottom_toTopOf="@id/tutorial_finish_button_start"

View file

@ -97,7 +97,6 @@
<string name="settings_launcher_change_wallpaper">Hintergrund ändern</string>
<string name="settings_launcher_section_display">Bildschirm</string>
<string name="settings_display_screen_timeout_disabled">Bildschirm nicht ausschalten</string>
<string name="settings_display_full_screen">Vollbild</string>
<string name="settings_display_rotate_screen">Bildschirm drehen</string>
<string name="settings_launcher_section_functionality">Funktionalität</string>
<string name="settings_enabled_gestures_double_swipe">Doppelte Wischaktionen</string>
@ -118,7 +117,6 @@
<string name="settings_list_layout_item_grid">Raster</string>
<string name="settings_general_choose_home_screen">Launcher wählen</string>
<string name="settings_meta_cant_select_launcher">App Info</string>
<string name="settings_meta_cant_select_launcher_msg">Das Gerät unterstützt diese Funktion nicht. Stattdessen die App Details bearbeiten?</string>
<string name="settings_meta_show_tutorial">Zum Tutorial</string>
<string name="settings_meta_reset">Einstellungen zurücksetzen</string>
<string name="settings_meta_reset_confirm">Alle Einstellungen gehen verloren. Weitermachen?</string>

View file

@ -63,7 +63,6 @@
<string name="settings_launcher_change_wallpaper">Cambiar fondo de pantalla</string>
<string name="settings_launcher_section_display">Pantalla</string>
<string name="settings_display_screen_timeout_disabled">Mantener encendida</string>
<string name="settings_display_full_screen">Pantalla completa</string>
<string name="settings_launcher_section_functionality">Funciones</string>
<string name="settings_enabled_gestures_double_swipe">Deslizar con dos dedos</string>
<string name="settings_functionality_auto_launch">Auto-lanzar búsquedas</string>
@ -76,7 +75,6 @@
-->
<string name="settings_general_choose_home_screen">Seleccionar Launcher</string>
<string name="settings_meta_cant_select_launcher">Información de la aplicación</string>
<string name="settings_meta_cant_select_launcher_msg">Su dispositivo no posee esta caracrerística. Desea cambiar los detalles de la aplicación?</string>
<string name="settings_meta_show_tutorial">Ver tutorial de Launcher</string>
<string name="settings_meta_reset">Configuración por defecto</string>
<string name="settings_meta_reset_confirm">Todas sus preferencias se eliminarán. Desea continuar?</string>
@ -127,4 +125,4 @@
<string name="tutorial_finish_button">Iniciar</string>
<string name="settings">Configuración</string>
<string name="ic_menu_alt">Más opciones</string>
</resources>
</resources>

View file

@ -55,7 +55,6 @@
<string name="settings_launcher_change_wallpaper">Changer le fond d\'écran</string>
<string name="settings_launcher_section_display">Écran</string>
<string name="settings_display_screen_timeout_disabled">Garder l\'écran allumé</string>
<string name="settings_display_full_screen">Utiliser le plein écran</string>
<string name="settings_launcher_section_functionality">Fonctions</string>
<string name="settings_enabled_gestures_double_swipe">Actions de double balayage</string>
<string name="settings_functionality_auto_launch">Lancer apps par recherche</string>
@ -68,7 +67,6 @@
-->
<string name="settings_general_choose_home_screen">Choisir μLauncher comme application d\'écran d\'accueil par défaut</string>
<string name="settings_meta_cant_select_launcher">Informations sur l\'application</string>
<string name="settings_meta_cant_select_launcher_msg">Votre appareil ne prend pas en charge cette fonctionnalité. Souhaitez-vous plutôt accéder aux détails de l\'application ?</string>
<string name="settings_meta_show_tutorial">Regarder le tutoriel</string>
<string name="settings_meta_reset">Réinitialiser</string>
<string name="settings_meta_reset_confirm">Vous allez réinitialiser tous vos paramètres. Souhaitez-vous poursuivre ?</string>
@ -231,4 +229,4 @@
<string name="settings_gesture_description_down_left_edge">Balayer vers le bas au bord gauche de l\'écran</string>
<string name="settings_enabled_gestures_edge_swipe_summary">Balayer au bord de l\'écran</string>
<string name="settings_clock_color">Couleur</string>
</resources>
</resources>

View file

@ -34,7 +34,6 @@
<br/><br/><br/><br/>
Puoi cambiare le tue scelte in seguito nelle impostazioni.
]]></string>
<string name="settings_meta_cant_select_launcher_msg">Il tuo dispositivo non supporta questa funzione. Vuoi aprire la pagina di dettaglio dell\'applicazione?</string>
<string name="alert_cant_open_title">Impossibile aprire l\'applicazione</string>
<string name="alert_cant_open_message">Desideri modificare le impostazioni?</string>
<string name="toast_cant_open_message">Apri le impostazioni per abbinare un\'azione a questo gesto</string>
@ -115,7 +114,6 @@
<string name="settings_launcher_change_wallpaper">Cambia immagine di sfondo</string>
<string name="settings_launcher_section_display">Schermo</string>
<string name="settings_display_screen_timeout_disabled">Mantieni lo schermo acceso</string>
<string name="settings_display_full_screen">Schermo intero</string>
<string name="settings_display_rotate_screen">Ruota lo schermo</string>
<string name="settings_launcher_section_functionality">Funzionalità</string>
<string name="settings_functionality_auto_keyboard">Apri automaticamente la tastiera per cercare</string>
@ -237,4 +235,4 @@
<string name="toast_activity_not_found_browser">Impossibile aprire l\'URL: nessun browser trovato.</string>
<string name="toast_activity_not_found_search_web">Non è stata trovata un\'applicazione per gestire la ricerca.</string>
<string name="dialog_consent_accessibility_text"><![CDATA[Stai per arrivare il servizio di accessibilità. Questo garantirà <strong>privilegi più ampi</strong> a µLauncher.<br/>µLauncher utilizzerà questi privilegi <strong>solo per bloccare lo schermo</strong>. µLauncher <strong>non raccoglierà mai alcun dato</strong>. In particolare, µLauncher non usa il servizio di accessibilità per raccogliere nessun dato.]]></string>
</resources>
</resources>

View file

@ -1,2 +1,200 @@
<?xml version="1.0" encoding="utf-8"?>
<resources></resources>
<resources>
<string name="alert_cant_open_title">アプリを開けません</string>
<string name="alert_cant_open_message">設定を変更しますか?</string>
<string name="settings_title">設定</string>
<string name="settings_tab_app">アプリ</string>
<string name="settings_tab_launcher">ランチャー</string>
<string name="settings_tab_meta">その他</string>
<string name="toast_cant_open_message">このジェスチャのアクションを選択するには設定を開きます</string>
<string name="settings_gesture_description_up">上にスワイプ</string>
<string name="settings_gesture_description_tap_up">タップしてから上にスワイプ</string>
<string name="settings_gesture_double_up">Double Up</string>
<string name="settings_gesture_tap_up">Tap + Up</string>
<string name="settings_gesture_up">Up</string>
<string name="settings_gesture_back">Back</string>
<string name="settings_gesture_description_double_up">2本指で上にスワイプ</string>
<string name="settings_gesture_down">Down</string>
<string name="settings_gesture_description_down">下にスワイプ</string>
<string name="settings_gesture_tap_down">Tap + Down</string>
<string name="settings_gesture_description_tap_down">タップしてから下にスワイプ</string>
<string name="settings_gesture_double_down">Double Down</string>
<string name="settings_gesture_description_double_down">2本指で下にスワイプ</string>
<string name="settings_gesture_left">Left</string>
<string name="settings_gesture_description_left">左にスワイプ</string>
<string name="settings_gesture_tap_left">Tap + Left</string>
<string name="settings_gesture_description_tap_left">タップしてから左にスワイプ</string>
<string name="settings_gesture_double_left">Double Left</string>
<string name="settings_gesture_description_double_left">2本指で左にスワイプ</string>
<string name="settings_gesture_right">Right</string>
<string name="settings_gesture_description_right">右にスワイプ</string>
<string name="settings_gesture_description_tap_right">タップしてから右にスワイプ</string>
<string name="settings_gesture_double_right">Double Right</string>
<string name="settings_gesture_right_top_edge">Right (Top)</string>
<string name="settings_gesture_description_right_top_edge">画面の上部で右にスワイプ</string>
<string name="settings_gesture_right_bottom_edge">Right (Bottom)</string>
<string name="settings_gesture_description_right_bottom_edge">画面の下部で右にスワイプ</string>
<string name="settings_gesture_left_bottom_edge">Left (Bottom)</string>
<string name="settings_gesture_description_left_bottom_edge">画面の下部で左にスワイプ</string>
<string name="settings_gesture_left_top_edge">Left (Top)</string>
<string name="settings_gesture_description_left_top_edge">画面の上部で左にスワイプ</string>
<string name="settings_gesture_up_left_edge">Up (Left Edge)</string>
<string name="settings_gesture_up_right_edge">Up (Right Edge)</string>
<string name="settings_gesture_description_up_right_edge">画面の右端で上にスワイプ</string>
<string name="settings_gesture_down_left_edge">Down (Left Edge)</string>
<string name="settings_gesture_description_down_left_edge">画面の左端で下にスワイプ</string>
<string name="settings_gesture_down_right_edge">Down (Right Edge)</string>
<string name="settings_gesture_swipe_larger"><![CDATA[>]]></string>
<string name="settings_gesture_description_swipe_larger">左上 -&gt; 右中 -&gt; 左下</string>
<string name="settings_gesture_swipe_larger_reverse"><![CDATA[> (Reverse)]]></string>
<string name="settings_gesture_description_swipe_larger_reverse">左下 -&gt; 右中 -&gt; 左上</string>
<string name="settings_gesture_swipe_smaller"><![CDATA[<]]></string>
<string name="settings_gesture_description_swipe_smaller">右上 -&gt; 左中 -&gt; 右下</string>
<string name="settings_gesture_swipe_smaller_reverse"><![CDATA[< (Reverse)]]></string>
<string name="settings_gesture_swipe_v">V</string>
<string name="settings_gesture_description_swipe_v">左上 -&gt; 中下 -&gt; 右上</string>
<string name="settings_gesture_swipe_v_reverse">V (Reverse)</string>
<string name="settings_gesture_description_swipe_v_reverse">右上 -&gt; 中下 -&gt; 左上</string>
<string name="settings_gesture_swipe_lambda">Λ</string>
<string name="settings_gesture_description_swipe_lambda">左下 -&gt; 中上 -&gt; 右下</string>
<string name="settings_gesture_swipe_lambda_reverse">Λ (Reverse)</string>
<string name="settings_gesture_description_swipe_lambda_reverse">右下 -&gt; 中上 -&gt; 左下</string>
<string name="settings_gesture_vol_down">Volume Down</string>
<string name="settings_gesture_description_vol_down">音量ダウンボタンを押す</string>
<string name="settings_gesture_double_click">Double Click</string>
<string name="settings_gesture_description_double_click">空白部分をダブルタップ</string>
<string name="settings_gesture_long_click">Long Click</string>
<string name="settings_gesture_date">Date</string>
<string name="settings_gesture_description_date">日付をタップ</string>
<string name="settings_gesture_time">Time</string>
<string name="settings_gesture_description_time">時刻をタップ</string>
<string name="settings_apps_choose">アプリを選択</string>
<string name="settings_launcher_section_appearance">外観</string>
<string name="settings_theme_color_theme">カラーテーマ</string>
<string name="settings_theme_color_theme_item_default">デフォルト</string>
<string name="settings_theme_color_theme_item_dark">ダーク</string>
<string name="settings_theme_color_theme_item_dynamic">ダイナミック</string>
<string name="settings_theme_text_shadow">文字の影</string>
<string name="settings_theme_background_item_transparent">透明</string>
<string name="settings_theme_background_item_blur">ブラー</string>
<string name="settings_theme_background_item_solid">ソリッド</string>
<string name="settings_theme_font">フォント</string>
<string name="settings_theme_font_item_system_default">システムデフォルト</string>
<string name="settings_theme_monochrome_icons">モノクロのアプリアイコン</string>
<string name="settings_launcher_section_date_time"><![CDATA[Date & time]]></string>
<string name="settings_clock_color"></string>
<string name="settings_clock_time_visible">時刻を表示</string>
<string name="settings_clock_date_visible">日付を表示</string>
<string name="settings_clock_localized">ローカライズされた日付形式を使用する</string>
<string name="settings_clock_show_seconds">秒を表示</string>
<string name="settings_clock_flip_date_time">日付と時刻を反転</string>
<string name="settings_theme_wallpaper">壁紙を選択</string>
<string name="settings_launcher_change_wallpaper">壁紙を変更</string>
<string name="settings_launcher_section_display">表示</string>
<string name="settings_display_screen_timeout_disabled">画面オンを維持</string>
<string name="settings_display_rotate_screen">画面の回転</string>
<string name="settings_enabled_gestures_double_swipe_summary">2本指でスワイプ</string>
<string name="settings_enabled_gestures_edge_swipe">Edgeスワイプアクション</string>
<string name="settings_enabled_gestures_edge_swipe_summary">画面端でスワイプ</string>
<string name="settings_functionality_search_web_summary">アプリリストで検索中にリターンキーを押すとWeb検索が起動します。</string>
<string name="settings_functionality_search_web">Webで検索</string>
<string name="settings_functionality_auto_keyboard">検索時にキーボードを表示</string>
<string name="settings_launcher_section_apps">アプリ</string>
<string name="settings_apps_hide_bound_apps">ジェスチャーに設定されたアプリをアプリ一覧に表示しない</string>
<string name="settings_apps_hide_paused_apps">一時停止されたアプリを隠す</string>
<string name="settings_list_layout">アプリ一覧のレイアウト</string>
<string name="settings_list_reverse_layout">アプリ一覧を反転</string>
<string name="settings_list_layout_item_default">デフォルト</string>
<string name="settings_list_layout_item_text">テキスト</string>
<string name="settings_list_layout_item_grid">グリッド</string>
<string name="settings_meta_show_tutorial">ランチャーのチュートリアルを見る</string>
<string name="settings_meta_reset">設定をリセット</string>
<string name="settings_meta_reset_confirm">すべての設定を破棄します。続行しますか?</string>
<string name="settings_meta_view_code">ソースコードを見る</string>
<string name="dialog_report_bug_title">バグを報告</string>
<string name="dialog_report_bug_button_clipboard">クリップボードにコピー</string>
<string name="dialog_report_bug_security_info">セキュリティ上の脆弱性をGitHubに公開しないでください。代わりに以下を使用してください。</string>
<string name="dialog_report_bug_button_security">セキュリティ上の脆弱性を報告</string>
<string name="dialog_report_bug_create_report">レポートを作成</string>
<string name="settings_meta_join_chat">µLauncherのチャットに入る</string>
<string name="settings_meta_privacy">プライバシーポリシー</string>
<string name="settings_meta_discord">Discordに参加してください</string>
<string name="list_title_hidden">非表示のアプリ</string>
<string name="list_title_private_space">プライベートスペース</string>
<string name="list_title_pick">アプリを選択</string>
<string name="list_tab_app">アプリ</string>
<string name="list_tab_other">その他</string>
<string name="list_app_delete">アンインストール</string>
<string name="list_app_info">アプリ情報</string>
<string name="list_app_favorite_remove">お気に入りから削除</string>
<string name="list_app_hidden_add">隠す</string>
<string name="list_app_rename">名称を変更</string>
<string name="list_not_removed">アプリを削除できませんでした</string>
<string name="list_apps_search_hint">検索</string>
<string name="list_apps_search_hint_no_auto_launch">検索(自動起動なし)</string>
<string name="list_other_settings">µLauncherの設定</string>
<string name="list_other_list">すべてのアプリ</string>
<string name="list_other_toggle_private_space_lock">プライベートスペースのロックを切り替え</string>
<string name="list_other_volume_up">音楽: うるさい</string>
<string name="list_other_volume_down">音楽: ひっそり</string>
<string name="list_other_track_next">音楽: 次</string>
<string name="list_other_track_previous">音楽: 前</string>
<string name="list_other_expand_notifications_panel">通知パネルを表示</string>
<string name="list_other_nop">なにもしねぇ</string>
<string name="list_other_lock_screen">画面をロック</string>
<string name="list_other_torch">ライトを切り替え</string>
<string name="pin_shortcut_title">ショートカットを追加</string>
<string name="pin_shortcut_button_bind">ジェシュチャーに設定</string>
<string name="pin_shortcut_button_ok">Ok</string>
<string name="pin_shortcut_switch_visible">アプリ一覧に表示</string>
<string name="tutorial_title">チュートリアル</string>
<string name="tutorial_concept_title">コンセプト</string>
<string name="tutorial_usage_title">使い方</string>
<string name="tutorial_usage_text">ホーム画面には現地の日付と時刻が表示されます。邪魔されることはありません。</string>
<string name="tutorial_usage_text_2">1回のスワイプまたはボタンのタップでアプリを起動できます。次のスライドでいくつか選択してください。</string>
<string name="tutorial_setup_title">セットアップ</string>
<string name="tutorial_setup_text_2">選択内容は後で変更することもできます。</string>
<string name="tutorial_finish_title">さあ行きましょう!</string>
<string name="tutorial_finish_button">始める</string>
<string name="settings">設定</string>
<string name="settings_gesture_description_back">戻るボタン / 戻るジェスチャ</string>
<string name="settings_theme_color_theme_item_light">ライト</string>
<string name="settings_enabled_gestures_double_swipe">Doubleスワイプアクション</string>
<string name="settings_functionality_auto_launch">検索結果を起動</string>
<string name="list_title_favorite">お気に入りのアプリ</string>
<string name="settings_gesture_description_vol_up">音量アップボタンを押す</string>
<string name="settings_gesture_description_long_click">空白部分をロングタップ</string>
<string name="settings_launcher_section_functionality">機能性</string>
<string name="dialog_report_bug_info">µLauncherの改善にご協力いただきありがとうございます。\nバグレポートに次の情報を追加することを検討してください。</string>
<string name="list_app_favorite_add">お気に入りに追加</string>
<string name="settings_gesture_description_up_left_edge">画面の左端で上にスワイプ</string>
<string name="settings_gesture_description_down_right_edge">画面の右端で下にスワイプ</string>
<string name="settings_apps_install">アプリをインストール</string>
<string name="list_removed">選択されたアプリを削除しました</string>
<string name="tutorial_finish_text">始める準備はできました!これがあなたにとって大きな価値となることを願っています! \t- FinnLauncherの作成者とJosiaいくつかの改良を行い、フォーク μLauncher を保守)</string>
<string name="settings_gesture_tap_right">Tap + Right</string>
<string name="settings_gesture_description_double_right">2本指で右にスワイプ</string>
<string name="settings_apps_hidden">非表示のアプリ</string>
<string name="settings_general_choose_home_screen">μLauncherホーム画面に設定</string>
<string name="settings_meta_fork_contact">フォークの開発者に問い合わせ</string>
<string name="settings_meta_contact">オリジナルの開発者に問い合わせる</string>
<string name="list_other_list_favorites">お気に入りのアプリ</string>
<string name="list_other_track_play_pause">音楽: 再生 / 一時停止</string>
<string name="settings_theme_background_item_dim">薄暗い</string>
<string name="settings_launcher_sensitivity">感度</string>
<string name="settings_meta_cant_select_launcher">アプリ情報</string>
<string name="settings_gesture_vol_up">Volume Up</string>
<string name="list_title_view">すべてのアプリ</string>
<string name="list_app_hidden_remove">表示</string>
<string name="settings_gesture_description_swipe_smaller_reverse">右下 -&gt; 左中 -&gt; 右上</string>
<string name="settings_theme_background">背景(アプリ一覧と設定)</string>
<string name="settings_enabled_gestures_edge_swipe_edge_width">端の幅</string>
<string name="settings_functionality_auto_launch_summary">この機能を一時的に無効にするにはスペースキーを押します。</string>
<string name="list_other_list_private_space">プライベートスペース</string>
<string name="settings_apps_hide_private_space_apps">アプリ一覧からプライベートスペースを隠す</string>
<string name="settings_meta_report_bug">バグを報告</string>
<string name="tutorial_start_text">このランチャーの使い方を学ぶのにほんの数秒しかかかりません</string>
<string name="tutorial_concept_text">Launcherは、最小限かつ効率的で、邪魔にならないように設計されています。支払い、広告、追跡サービスは一切ありません。</string>
<string name="tutorial_concept_text_2">このアプリはオープンソースMIT ライセンスであり、GitHub で入手できます!リポジトリを必ずチェックしてください!</string>
<string name="tutorial_setup_text">デフォルトのアプリをいくつか選択しました。必要に応じて今すぐ変更できます。</string>
</resources>

View file

@ -66,7 +66,6 @@
<string name="settings_launcher_change_wallpaper">Alterar papel de parede</string>
<string name="settings_launcher_section_display">Exibição</string>
<string name="settings_display_screen_timeout_disabled">Manter a tela ligada</string>
<string name="settings_display_full_screen">Usar tela cheia</string>
<string name="settings_launcher_section_functionality">Funcionalidades</string>
<string name="settings_enabled_gestures_double_swipe">Gestos com 2 dedos</string>
<string name="settings_enabled_gestures_edge_swipe">Ações de deslize nas bordas</string>
@ -80,7 +79,6 @@
-->
<string name="settings_general_choose_home_screen">Definir o μLauncher como tela inicial</string>
<string name="settings_meta_cant_select_launcher">Informações do aplicativo</string>
<string name="settings_meta_cant_select_launcher_msg">Seu dispositivo não é compatível com esse recurso. Gerenciar detalhes do app em vez disso?</string>
<string name="settings_meta_show_tutorial">Ver tutorial do launcher</string>
<string name="settings_meta_reset">Redefinir configuraçãos</string>
<string name="settings_meta_reset_confirm">Você vai descartar todas as suas preferências. Continuar?</string>

View file

@ -137,7 +137,6 @@
<string name="settings_launcher_change_wallpaper">Duvar kağıdını değiştir</string>
<string name="settings_launcher_section_display">Ekran</string>
<string name="settings_display_screen_timeout_disabled">Ekranıık tut</string>
<string name="settings_display_full_screen">Tam ekran kullan</string>
<string name="settings_display_rotate_screen">Ekranı döndür</string>
<string name="settings_launcher_section_functionality">İşlevsellik</string>
<string name="settings_enabled_gestures_edge_swipe_summary">Ekranın köşesinden kaydırın</string>
@ -165,7 +164,6 @@
<string name="settings_list_layout_item_text">Metin</string>
<string name="settings_list_layout_item_grid">Izgara</string>
<string name="settings_meta_cant_select_launcher">Uygulama Detayı</string>
<string name="settings_meta_cant_select_launcher_msg">Sizin cihazınız bu özelliği desteklemiyor. Onun yerine uygulama detaylarını düzenleyin?</string>
<string name="settings_meta_reset">Ayarları Sıfırlayın</string>
<string name="settings_meta_reset_confirm">Tüm tercihlerinizi bir kenara bırakacaksınız. Devam mı?</string>
<string name="settings_theme_font_item_monospace">Tek uzay</string>
@ -209,4 +207,4 @@
<string name="dialog_select_color_ok">OK</string>
<string name="dialog_select_color_color_hex">Renk</string>
<string name="dialog_choose_color_title">Renk seçin</string>
</resources>
</resources>

View file

@ -44,14 +44,12 @@
<string name="settings_theme_wallpaper">选择一个壁纸</string>
<string name="settings_launcher_change_wallpaper">换壁纸</string>
<string name="settings_display_screen_timeout_disabled">保持屏幕常亮</string>
<string name="settings_display_full_screen">使用全屏</string>
<string name="settings_launcher_section_functionality">功能</string>
<string name="settings_enabled_gestures_edge_swipe">边缘滑动动作</string>
<string name="settings_functionality_auto_launch">零点击启动唯一搜索结果</string>
<string name="settings_functionality_auto_launch">直接启动匹配搜索内容的应用</string>
<string name="settings_functionality_auto_keyboard">搜索时呼出键盘</string>
<string name="settings_launcher_sensitivity">灵敏度</string>
<string name="settings_meta_cant_select_launcher">应用信息</string>
<string name="settings_meta_cant_select_launcher_msg">您的设备不支持此功能。要不打开应用程序详细?</string>
<string name="settings_meta_show_tutorial">查看启动器教程</string>
<string name="settings_meta_reset">重置设置</string>
<string name="settings_meta_reset_confirm">你将放弃你所有的配置。继续吗?</string>
@ -213,4 +211,63 @@
<string name="toast_private_space_default_home_screen">µLauncher 需要作为默认的主屏幕来访问私人空间。</string>
<string name="toast_activity_not_found_search_web">没有找到处理搜索的应用。</string>
<string name="toast_activity_not_found_browser">无法打开 URL找不到浏览器。</string>
<string name="dialog_consent_accessibility_privileges">我已知晓,这将赋予 µLauncher 广泛且重要的权限。</string>
<string name="settings_apps_hide_private_space_apps">在应用程序列表中隐藏私人空间</string>
<string name="settings_apps_hide_paused_apps">隐藏已被暂停的应用</string>
<string name="settings_gesture_description_back">返回按键 / 返回手势</string>
<string name="settings_gesture_description_tap_down">先单击然后再下滑</string>
<string name="settings_functionality_search_web">在网络上搜索</string>
<string name="settings_gesture_description_swipe_smaller">(从)右上 (滑向)中左(滑向)右下</string>
<string name="settings_functionality_search_web_summary">通过按回车键在应用列表搜索界面激活网络搜索。</string>
<string name="settings_gesture_description_swipe_lambda">(从)左下 (滑向)中上(滑向)右下</string>
<string name="screen_lock_method_dialog_text"><![CDATA[
<h1>选择锁定设备的方式</h1>
有2种方式可以用来锁定屏幕。
遗憾的是,两者都有缺点:<br/><br/>
<h3>通过设置“设备管理应用”</h3>
无法和指纹解锁和脸部解锁共同使用。
<br/>
<br/>
<h3>通过“无障碍”功能</h3>
需要更多的权限。
µLauncher 将这些权限仅用于锁定屏幕。
<br/>
(对于任何一个从网上下载的应用所做的类似声明,你都不应该抱持“默认为可信”的态度,你可以并应该检查一下它的<a href=\"https://github.com/jrpie/Launcher\">源代码</a>.)
<br/>
在某些设备上激活辅助功能服务后启动PIN码将不再用于加密数据。
如果遇到该问题,可以通过<a href="https://issuetracker.google.com/issues/37010136#comment36">该方法</a>重新激活启动PIN码用于数据加密。
<br/><br/><br/><br/>
你可以在设置中随时更改这个选项。
]]></string>
<string name="list_apps_search_hint_no_auto_launch">搜索(不触发自动启动应用程序)</string>
<string name="dialog_consent_accessibility_text"><![CDATA[您即将激活“无障碍”服务。这将授予 µLauncher <strong>广泛且重要的权限</strong>。<br/>µLauncher 将这些权限<strong>仅用于锁定屏幕</strong>。µLauncher <strong>绝不会收集任何数据</strong>。尤其是µLauncher 不会使用“无障碍”服务来收集任何数据。]]></string>
<string name="settings_gesture_description_swipe_larger">(从)左上 (滑向)中右(滑向)左下</string>
<string name="settings_gesture_tap_up">单击 + 上滑</string>
<string name="settings_gesture_tap_down">单击 + 下滑</string>
<string name="settings_gesture_tap_left">单击 + 左滑</string>
<string name="settings_gesture_description_tap_left">先单击然后再左滑</string>
<string name="settings_gesture_description_tap_up">先单击然后再上滑</string>
<string name="settings_gesture_tap_right">单击 + 右滑</string>
<string name="settings_gesture_description_tap_right">先单击然后再右滑</string>
<string name="settings_gesture_description_swipe_larger_reverse">(从)左下 (滑向)中右(滑向)左上</string>
<string name="settings_gesture_description_swipe_smaller_reverse">(从)右下 (滑向)中左(滑向)右上</string>
<string name="settings_gesture_description_swipe_v">(从)左上 (滑向)中下(滑向)右上</string>
<string name="settings_gesture_description_swipe_v_reverse">(从)右上 (滑向)中下(滑向)左上</string>
<string name="settings_gesture_description_swipe_lambda_reverse">(从)右下 (滑向)中上(滑向)左下</string>
<string name="settings_gesture_swipe_lambda_reverse">Λ (反向)</string>
<string name="settings_gesture_swipe_v_reverse">V反向</string>
<string name="settings_gesture_swipe_larger_reverse"><![CDATA[> (反向)]]></string>
<string name="settings_gesture_swipe_smaller_reverse"><![CDATA[< (反向)]]></string>
<string name="settings_functionality_auto_launch_summary">按空格键临时暂停该功能。</string>
<string name="settings_list_layout">应用程序列表样式</string>
<string name="pin_shortcut_button_bind">绑定到手势</string>
<string name="list_other_track_play_pause">音乐:播放 / 暂停</string>
<string name="dialog_report_bug_button_security">报告安全漏洞</string>
<string name="dialog_report_bug_security_info">安全漏洞请不要在 Github 上以公开的方式提交,而是使用以下方式进行报告:</string>
<string name="dialog_report_bug_info">感谢您帮助改进 µLauncher\n请考虑在您的应用程序错误报告中添加以下信息</string>
<string name="dialog_consent_accessibility_other_options">我已知晓,还有其他替代方法(使用设备管理员权限或电源按键)。</string>
</resources>

View file

@ -176,7 +176,7 @@
<!-- Legal -->
<string name="legal_info_text"><![CDATA[
<h2>µLauncher</h2>
<h2>μLauncher</h2>
Modifications to Launcher.
<p><a href=\"https://github.com/jrpie/launcher\">github.com/jrpie/launcher</a></p>

View file

@ -193,7 +193,7 @@
<string name="settings_general_choose_home_screen">Set μLauncher as home screen</string>
<string name="settings_meta_cant_select_launcher">App Info</string>
<string name="settings_meta_show_tutorial">View Launcher Tutorial</string>
<string name="settings_meta_show_tutorial">View µLauncher Tutorial</string>
<string name="settings_meta_reset">Reset Settings</string>
<string name="settings_meta_reset_confirm">You are going to discard all your preferences. Continue?</string>
@ -202,14 +202,14 @@
<string name="settings_meta_report_bug">Report a bug</string>
<string name="dialog_report_bug_title">Report a bug</string>
<string name="dialog_report_bug_info">Thank you for helping to improve µLauncher!\nPlease consider adding the following information to your bug report:</string>
<string name="dialog_report_bug_info">Thank you for helping to improve μLauncher!\nPlease consider adding the following information to your bug report:</string>
<string name="dialog_report_bug_button_clipboard">Copy to clipboard</string>
<string name="dialog_report_bug_security_info">Please do not report security vulnerabilities publicly on GitHub, but use the following instead:</string>
<string name="dialog_report_bug_button_security">Report a security vulnerability</string>
<string name="dialog_report_bug_create_report">Create report</string>
<string name="settings_meta_fork_contact">Contact the developer of the fork</string>
<string name="settings_meta_join_chat">Join µLauncher chat</string>
<string name="settings_meta_join_chat">Join μLauncher chat</string>
<string name="settings_meta_donate">Donate</string>
<string name="settings_meta_privacy">Privacy Policy</string>
@ -246,7 +246,7 @@
<string name="list_apps_search_hint">Search</string>
<string name="list_apps_search_hint_no_auto_launch">Search (no auto launch)</string>
<string name="list_other_settings">µLauncher Settings</string>
<string name="list_other_settings">μLauncher Settings</string>
<string name="list_other_list">All Applications</string>
<string name="list_other_list_favorites">Favorite Applications</string>
<string name="list_other_list_private_space">Private Space</string>
@ -274,22 +274,29 @@
-
-->
<string name="tutorial_title">Tutorial</string>
<string name="tutorial_start_text">Take a few seconds to learn how to use this Launcher!</string>
<string name="tutorial_start_text">👋\n\nTake a few seconds to learn how to use this Launcher!</string>
<string name="tutorial_concept_title">Concept</string>
<string name="tutorial_concept_text">Launcher is designed to be minimal, efficient and free of distraction. It is free of payments, ads and tracking services.</string>
<string name="tutorial_concept_text_2">The app is open-source (MIT license) and available on GitHub! Make sure to check out the repository!</string>
<string name="tutorial_concept_text">μLauncher is designed to be minimal, efficient and free of distraction.
\n\nIt contains no ads and collects no data.</string>
<string name="tutorial_concept_text_2">It is free software (MIT license)!\nMake sure to check out the repository!</string>
<string name="tutorial_concept_label_version">Version</string>
<string name="tutorial_usage_title">Usage</string>
<string name="tutorial_usage_text">Your home screen contains the local date and time. No distraction.</string>
<string name="tutorial_usage_text_2">You can launch your apps with a single swipe or button press. Choose some in the next slide.</string>
<string name="tutorial_usage_text_2">You can launch your most important apps with touch gestures or button presses.</string>
<string name="tutorial_app_list_title">All Apps</string>
<string name="tutorial_app_list_text">You can quickly search through all apps in the app list.\n\nSwipe up to open it, or bind it to a different gesture.</string>
<string name="tutorial_app_list_text_2">Once only one app matches, it launches automatically.\nThis can be disabled by prefixing the query with a space.</string>
<string name="tutorial_setup_title">Setup</string>
<string name="tutorial_setup_text">We chose some default apps for you. You can change them now if you want to:</string>
<string name="tutorial_setup_text_2">You can also change your selection later.</string>
<string name="tutorial_finish_title">Let\'s go!</string>
<string name="tutorial_finish_text">You are ready to get started! I hope this is of great value to you! - Finn (who made Launcher) \tand Josia (who made some improvements and maintains the fork μLauncher)</string>
<string name="tutorial_finish_text">You are ready to get started!\n\nI hope this is of great value to you!\n\n- Finn (who made Launcher) and Josia (who made some improvements and maintains the fork μLauncher)</string>
<string name="tutorial_finish_button">Start</string>
@ -301,7 +308,7 @@
<string name="snackbar_app_hidden">App hidden. You can make it visible again in settings.</string>
<string name="undo">Undo</string>
<string name="list_other_expand_settings_panel">Quick Settings</string>
<string name="toast_device_admin_not_enabled">µLauncher needs to be a device admin in order to lock the screen.</string>
<string name="toast_device_admin_not_enabled">μLauncher needs to be a device admin in order to lock the screen.</string>
<string name="device_admin_explanation">This is required for the lock screen action.</string>
<string name="device_admin_description">Enable the lock screen action</string>
<string name="alert_no_torch_found">No camera with torch detected.</string>
@ -311,18 +318,18 @@
<string name="toast_private_space_locked">Private space locked</string>
<string name="toast_private_space_unlocked">Private space unlocked</string>
<string name="toast_private_space_not_available">Private space is not available</string>
<string name="toast_private_space_default_home_screen">µLauncher needs to be the default home screen to access private space.</string>
<string name="toast_private_space_default_home_screen">μLauncher needs to be the default home screen to access private space.</string>
<string name="tooltip_lock_private_space">Lock private space</string>
<string name="tooltip_unlock_private_space">Unlock private space</string>
<string name="toast_lock_screen_not_supported">Error: Locking the screen using accessibility is not supported on this device. Please use device admin instead.</string>
<string name="accessibility_service_name">µLauncher - lock screen</string>
<string name="accessibility_service_name">μLauncher - lock screen</string>
<string name="accessibility_service_description">
Setting µLauncher as an accessibility service allows it to lock the screen.
Setting μLauncher as an accessibility service allows it to lock the screen.
Note that excessive permissions are required. You should never grant such permissions lightly to any app.
µLauncher will use the accessibility service only for locking the screen. You can check the source code to make sure.
μLauncher will use the accessibility service only for locking the screen. You can check the source code to make sure.
Note that locking the screen can also be accomplished by granting µLauncher device administrator permissions. However that method doesn\'t work with fingerprint and face unlock.
Note that locking the screen can also be accomplished by granting μLauncher device administrator permissions. However that method doesn\'t work with fingerprint and face unlock.
</string>
@ -340,7 +347,7 @@
<h3>Accessibility Service</h3>
Requires excessive privileges.
µLauncher will use those privileges only for locking the screen.
μLauncher will use those privileges only for locking the screen.
<br/>
(You really should not trust a random app you just downloaded with such a claim, but you can check the <a href=\"https://github.com/jrpie/Launcher\">source code</a>.)
<br/>
@ -363,11 +370,11 @@
<string name="dialog_select_color_ok">Ok</string>
<string name="dialog_select_color_color_hex">Color</string>
<string name="dialog_choose_color_title">Choose color</string>
<string name="dialog_consent_accessibility_privileges">I am aware that this will grant far-reaching privileges to µLauncher.</string>
<string name="dialog_consent_accessibility_privileges">I am aware that this will grant far-reaching privileges to μLauncher.</string>
<string name="dialog_consent_accessibility_other_options">I am aware that other options exist (using device administrator privileges or the power button).</string>
<string name="dialog_consent_accessibility_consent">I consent to µLauncher using the accessibility service to provide functionality unrelated to accessibility.</string>
<string name="dialog_consent_accessibility_data_collection">I consent to µLauncher not collecting any data.</string>
<string name="dialog_consent_accessibility_text"><![CDATA[You are about to activate the accessibility service. This will grant <strong>far-reaching privileges</strong> to µLauncher.<br/>µLauncher will use these privileges <strong>only to lock the screen</strong>. µLauncher <strong>will never collect any data</strong>. In particular, µLauncher does not use the accessibility service to collect any data.]]></string>
<string name="dialog_consent_accessibility_consent">I consent to μLauncher using the accessibility service to provide functionality unrelated to accessibility.</string>
<string name="dialog_consent_accessibility_data_collection">I consent to μLauncher not collecting any data.</string>
<string name="dialog_consent_accessibility_text"><![CDATA[You are about to activate the accessibility service. This will grant <strong>far-reaching privileges</strong> to μLauncher.<br/>μLauncher will use these privileges <strong>only to lock the screen</strong>. μLauncher <strong>will never collect any data</strong>. In particular, μLauncher does not use the accessibility service to collect any data.]]></string>
<string name="dialog_consent_accessibility_title">Activating the Accessibility Service</string>
<string name="dialog_consent_accessibility_ok">Activate Accessibility Service</string>
<string name="dialog_cancel">Cancel</string>

View file

@ -0,0 +1,22 @@
µLauncherは、スワイプジェスチャとタップだけでアプリを起動できるホーム画面です。
必要最小限で、効率的で、気が散らない。
ホーム画面には日付、時刻、壁紙のみが表示されます。
戻るを押すか上にスワイプすると(これは設定可能)、
インストールされているすべてのアプリのリストが開き、効率的に検索できます。
このアプリは、Finn M Glas氏のアプリ <a href="https://f-droid.org/packages/com.finnmglas.launcher/">Launcher</a> のフォークです。
機能:
* 35種のジェスチャーにアクションを設定できます。
* アクションは以下のいずれかになります:
- アプリを起動
- アプリを表示
- お気に入りのアプリを表示
- ボリュームを上げる/下げる
- 音楽: 次/前の曲
- 画面をロック
- ライトの切り替え
- 通知 / クイック設定を表示
* 仕事用プロファイルに対応しているので、Shelterなどのアプリも使えます。

View file

@ -0,0 +1 @@
気が散らない、最小限の Android ホーム画面。

View file

@ -0,0 +1 @@
µLauncher