Merge pull request #26 from lucasnlm/add-translators-to-about
Add Translators to About
This commit is contained in:
commit
68873da0ed
43 changed files with 810 additions and 312 deletions
|
@ -122,7 +122,12 @@
|
|||
</activity>
|
||||
|
||||
<activity
|
||||
android:name="dev.lucasnlm.antimine.about.thirds.ThirdPartiesActivity"
|
||||
android:name="dev.lucasnlm.antimine.about.views.thirds.ThirdPartiesFragment"
|
||||
android:label="@string/licenses"
|
||||
android:theme="@style/AppTheme" />
|
||||
|
||||
<activity
|
||||
android:name="dev.lucasnlm.antimine.about.views.translators.TranslatorsFragment"
|
||||
android:theme="@style/AppTheme" />
|
||||
|
||||
<activity
|
||||
|
|
|
@ -14,7 +14,6 @@ import android.view.MenuItem
|
|||
import android.view.View
|
||||
import androidx.appcompat.app.ActionBarDrawerToggle
|
||||
import androidx.appcompat.app.AlertDialog
|
||||
import androidx.core.content.ContextCompat
|
||||
import androidx.core.os.HandlerCompat.postDelayed
|
||||
import androidx.core.view.GravityCompat
|
||||
import androidx.drawerlayout.widget.DrawerLayout
|
||||
|
@ -37,7 +36,6 @@ import dev.lucasnlm.antimine.common.level.viewmodel.GameViewModelFactory
|
|||
import dev.lucasnlm.antimine.core.analytics.AnalyticsManager
|
||||
import dev.lucasnlm.antimine.core.analytics.models.Analytics
|
||||
import dev.lucasnlm.antimine.core.preferences.IPreferencesRepository
|
||||
import dev.lucasnlm.antimine.core.utils.isDarkModeEnabled
|
||||
import dev.lucasnlm.antimine.instant.InstantAppManager
|
||||
import dev.lucasnlm.antimine.level.view.CustomLevelDialogFragment
|
||||
import dev.lucasnlm.antimine.level.view.EndGameDialogFragment
|
||||
|
@ -216,11 +214,6 @@ class GameActivity : DaggerAppCompatActivity() {
|
|||
R.string.open_menu,
|
||||
R.string.close_menu
|
||||
).apply {
|
||||
if (!isDarkModeEnabled(applicationContext)) {
|
||||
drawerArrowDrawable.color =
|
||||
ContextCompat.getColor(applicationContext, R.color.primary)
|
||||
}
|
||||
|
||||
syncState()
|
||||
}
|
||||
)
|
||||
|
|
|
@ -5,25 +5,59 @@ import android.net.Uri
|
|||
import android.os.Bundle
|
||||
import androidx.appcompat.app.AppCompatActivity
|
||||
import android.view.MenuItem
|
||||
import dev.lucasnlm.antimine.BuildConfig
|
||||
import androidx.fragment.app.Fragment
|
||||
import androidx.fragment.app.FragmentTransaction
|
||||
import androidx.lifecycle.Observer
|
||||
import androidx.lifecycle.ViewModelProviders
|
||||
import dev.lucasnlm.antimine.R
|
||||
|
||||
import dev.lucasnlm.antimine.about.thirds.ThirdPartiesActivity
|
||||
import kotlinx.android.synthetic.main.activity_about.*
|
||||
import dev.lucasnlm.antimine.about.views.AboutInfoFragment
|
||||
import dev.lucasnlm.antimine.about.models.AboutEvent
|
||||
import dev.lucasnlm.antimine.about.views.translators.TranslatorsFragment
|
||||
import dev.lucasnlm.antimine.about.views.thirds.ThirdPartiesFragment
|
||||
import dev.lucasnlm.antimine.about.viewmodel.AboutViewModel
|
||||
|
||||
class AboutActivity : AppCompatActivity() {
|
||||
private lateinit var aboutViewModel: AboutViewModel
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
setContentView(R.layout.activity_about)
|
||||
setContentView(R.layout.activity_empty)
|
||||
bindToolbar()
|
||||
|
||||
version.text = getString(
|
||||
R.string.version_s,
|
||||
getString(R.string.app_name), BuildConfig.VERSION_NAME
|
||||
)
|
||||
aboutViewModel = ViewModelProviders.of(this).get(AboutViewModel::class.java)
|
||||
|
||||
thirdsParties.setOnClickListener { openThirdParties() }
|
||||
sourceCode.setOnClickListener { openSourceCode() }
|
||||
aboutViewModel.eventObserver.observe(this, Observer { event ->
|
||||
when (event) {
|
||||
AboutEvent.ThirdPartyLicenses -> {
|
||||
replaceFragment(ThirdPartiesFragment(), ThirdPartiesFragment::class.simpleName)
|
||||
}
|
||||
AboutEvent.SourceCode -> {
|
||||
openSourceCode()
|
||||
}
|
||||
AboutEvent.Translators -> {
|
||||
replaceFragment(TranslatorsFragment(), TranslatorsFragment::class.simpleName)
|
||||
}
|
||||
else -> {
|
||||
replaceFragment(AboutInfoFragment(), null)
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
replaceFragment(AboutInfoFragment(), null)
|
||||
}
|
||||
|
||||
private fun replaceFragment(fragment: Fragment, stackName: String?) {
|
||||
supportFragmentManager.beginTransaction().apply {
|
||||
if (stackName != null) {
|
||||
setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN)
|
||||
addToBackStack(stackName)
|
||||
}
|
||||
replace(R.id.content, fragment)
|
||||
}.commitAllowingStateLoss()
|
||||
}
|
||||
|
||||
private fun openSourceCode() {
|
||||
startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(SOURCE_CODE)))
|
||||
}
|
||||
|
||||
override fun onOptionsItemSelected(item: MenuItem): Boolean =
|
||||
|
@ -43,11 +77,7 @@ class AboutActivity : AppCompatActivity() {
|
|||
}
|
||||
}
|
||||
|
||||
private fun openThirdParties() {
|
||||
startActivity(Intent(this, ThirdPartiesActivity::class.java))
|
||||
}
|
||||
|
||||
private fun openSourceCode() {
|
||||
startActivity(Intent(Intent.ACTION_VIEW, Uri.parse("https://github.com/lucasnlm/antimine-android")))
|
||||
companion object {
|
||||
private const val SOURCE_CODE = "https://github.com/lucasnlm/antimine-android"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -2,7 +2,6 @@ package dev.lucasnlm.antimine.about
|
|||
|
||||
import android.os.Bundle
|
||||
import androidx.appcompat.app.AppCompatActivity
|
||||
import android.util.Log
|
||||
import android.view.MenuItem
|
||||
import android.view.View
|
||||
import dev.lucasnlm.antimine.R
|
||||
|
@ -13,10 +12,6 @@ import kotlinx.coroutines.GlobalScope
|
|||
import kotlinx.coroutines.launch
|
||||
import kotlinx.coroutines.withContext
|
||||
|
||||
import java.io.ByteArrayOutputStream
|
||||
import java.io.IOException
|
||||
import java.io.InputStream
|
||||
|
||||
class TextActivity : AppCompatActivity() {
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
|
@ -24,8 +19,6 @@ class TextActivity : AppCompatActivity() {
|
|||
setContentView(R.layout.activity_text)
|
||||
bindToolbar()
|
||||
|
||||
progressBar.isIndeterminate = true
|
||||
|
||||
GlobalScope.launch {
|
||||
withContext(Dispatchers.Main) {
|
||||
progressBar.visibility = View.VISIBLE
|
||||
|
@ -33,45 +26,22 @@ class TextActivity : AppCompatActivity() {
|
|||
|
||||
withContext(Dispatchers.IO) {
|
||||
val rawPath = intent.getIntExtra(Constants.TEXT_PATH, -1)
|
||||
var result: String? = null
|
||||
|
||||
if (rawPath > 0) {
|
||||
resources.openRawResource(rawPath).use { inputStream ->
|
||||
val result = resources.openRawResource(rawPath)
|
||||
.bufferedReader()
|
||||
.readLines()
|
||||
.joinToString("\n")
|
||||
|
||||
result = readTextFile(inputStream)
|
||||
withContext(Dispatchers.Main) {
|
||||
textView.text = result
|
||||
progressBar.visibility = View.GONE
|
||||
}
|
||||
}
|
||||
|
||||
withContext(Dispatchers.Main) {
|
||||
textView.text = result
|
||||
progressBar.visibility = View.GONE
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private fun readTextFile(inputStream: InputStream): String {
|
||||
var result = ""
|
||||
ByteArrayOutputStream().use { outputStream ->
|
||||
val buf = ByteArray(4096)
|
||||
var len: Int
|
||||
try {
|
||||
while (true) {
|
||||
len = inputStream.read(buf)
|
||||
if (len != -1) {
|
||||
outputStream.write(buf, 0, len)
|
||||
} else {
|
||||
break
|
||||
}
|
||||
}
|
||||
} catch (e: IOException) {
|
||||
Log.e(TAG, "Fail to read file.", e)
|
||||
}
|
||||
result = outputStream.toString()
|
||||
}
|
||||
return result
|
||||
}
|
||||
|
||||
override fun onOptionsItemSelected(item: MenuItem): Boolean {
|
||||
var handled = false
|
||||
|
||||
|
@ -90,8 +60,4 @@ class TextActivity : AppCompatActivity() {
|
|||
setHomeButtonEnabled(true)
|
||||
}
|
||||
}
|
||||
|
||||
companion object {
|
||||
private const val TAG = "TextActivity"
|
||||
}
|
||||
}
|
||||
|
|
|
@ -0,0 +1,7 @@
|
|||
package dev.lucasnlm.antimine.about.models
|
||||
|
||||
enum class AboutEvent {
|
||||
ThirdPartyLicenses,
|
||||
SourceCode,
|
||||
Translators
|
||||
}
|
|
@ -1,8 +1,8 @@
|
|||
package dev.lucasnlm.antimine.about.thirds.data
|
||||
package dev.lucasnlm.antimine.about.models
|
||||
|
||||
import androidx.annotation.RawRes
|
||||
|
||||
internal data class ThirdParty(
|
||||
data class ThirdParty(
|
||||
val name: String,
|
||||
@RawRes val license: Int
|
||||
)
|
|
@ -0,0 +1,6 @@
|
|||
package dev.lucasnlm.antimine.about.models
|
||||
|
||||
data class TranslationInfo(
|
||||
val language: String,
|
||||
val translators: Sequence<String>
|
||||
)
|
|
@ -1,78 +0,0 @@
|
|||
package dev.lucasnlm.antimine.about.thirds
|
||||
|
||||
import android.os.Bundle
|
||||
import androidx.appcompat.app.AppCompatActivity
|
||||
import android.view.MenuItem
|
||||
import androidx.recyclerview.widget.DividerItemDecoration
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
|
||||
import dev.lucasnlm.antimine.R
|
||||
import dev.lucasnlm.antimine.about.thirds.data.ThirdParty
|
||||
import dev.lucasnlm.antimine.about.thirds.view.ThirdPartyAdapter
|
||||
import kotlinx.android.synthetic.main.activity_third_party.*
|
||||
|
||||
class ThirdPartiesActivity : AppCompatActivity() {
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
setContentView(R.layout.activity_third_party)
|
||||
bindToolbar()
|
||||
|
||||
licenses.apply {
|
||||
setHasFixedSize(true)
|
||||
addItemDecoration(
|
||||
DividerItemDecoration(context, DividerItemDecoration.VERTICAL)
|
||||
)
|
||||
layoutManager = LinearLayoutManager(context)
|
||||
}
|
||||
|
||||
loadLicenses()
|
||||
}
|
||||
|
||||
private fun loadLicenses() {
|
||||
licenses.adapter = ThirdPartyAdapter(
|
||||
listOf(
|
||||
ThirdParty(
|
||||
"Android SDK License",
|
||||
R.raw.android_sdk
|
||||
),
|
||||
ThirdParty(
|
||||
"Material Design Icons",
|
||||
R.raw.apache2
|
||||
),
|
||||
ThirdParty(
|
||||
"Dagger",
|
||||
R.raw.apache2
|
||||
),
|
||||
ThirdParty(
|
||||
"Moshi",
|
||||
R.raw.apache2
|
||||
),
|
||||
ThirdParty(
|
||||
"Mockito",
|
||||
R.raw.mockito
|
||||
),
|
||||
ThirdParty(
|
||||
"Sounds",
|
||||
R.raw.sounds
|
||||
)
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
override fun onOptionsItemSelected(item: MenuItem): Boolean =
|
||||
when (item.itemId) {
|
||||
android.R.id.home -> {
|
||||
onBackPressed()
|
||||
true
|
||||
}
|
||||
else -> super.onOptionsItemSelected(item)
|
||||
}
|
||||
|
||||
private fun bindToolbar() {
|
||||
supportActionBar?.apply {
|
||||
setTitle(R.string.licenses)
|
||||
setDisplayHomeAsUpEnabled(true)
|
||||
setHomeButtonEnabled(true)
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,38 +0,0 @@
|
|||
package dev.lucasnlm.antimine.about.thirds.view
|
||||
|
||||
import android.content.Intent
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import android.view.LayoutInflater
|
||||
import android.view.ViewGroup
|
||||
import dev.lucasnlm.antimine.R
|
||||
|
||||
import dev.lucasnlm.antimine.about.Constants
|
||||
import dev.lucasnlm.antimine.about.TextActivity
|
||||
import dev.lucasnlm.antimine.about.thirds.data.ThirdParty
|
||||
|
||||
internal class ThirdPartyAdapter(
|
||||
private val thirdParties: List<ThirdParty>
|
||||
) : RecyclerView.Adapter<ThirdPartyItemHolder>() {
|
||||
|
||||
override fun getItemCount(): Int = thirdParties.size
|
||||
|
||||
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ThirdPartyItemHolder {
|
||||
val view = LayoutInflater
|
||||
.from(parent.context)
|
||||
.inflate(R.layout.view_third_party, parent, false)
|
||||
return ThirdPartyItemHolder(view)
|
||||
}
|
||||
|
||||
override fun onBindViewHolder(holder: ThirdPartyItemHolder, position: Int) {
|
||||
val thirdParty = thirdParties[position]
|
||||
holder.title.text = thirdParty.name
|
||||
holder.itemView.setOnClickListener { view ->
|
||||
val intent = Intent(view.context, TextActivity::class.java).apply {
|
||||
putExtra(Constants.TEXT_TITLE, thirdParty.name)
|
||||
putExtra(Constants.TEXT_PATH, thirdParty.license)
|
||||
}
|
||||
|
||||
view.context.startActivity(intent)
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,76 @@
|
|||
package dev.lucasnlm.antimine.about.viewmodel
|
||||
|
||||
import androidx.lifecycle.MutableLiveData
|
||||
import androidx.lifecycle.ViewModel
|
||||
import dev.lucasnlm.antimine.R
|
||||
import dev.lucasnlm.antimine.about.models.AboutEvent
|
||||
import dev.lucasnlm.antimine.about.models.ThirdParty
|
||||
import dev.lucasnlm.antimine.about.models.TranslationInfo
|
||||
import dev.lucasnlm.antimine.about.views.thirds.ThirdPartyAdapter
|
||||
import dev.lucasnlm.antimine.about.views.translators.TranslatorsAdapter
|
||||
|
||||
class AboutViewModel : ViewModel() {
|
||||
val eventObserver = MutableLiveData<AboutEvent>()
|
||||
|
||||
fun getTranslators() = TranslatorsAdapter(
|
||||
listOf(
|
||||
TranslationInfo(
|
||||
"Czech",
|
||||
sequenceOf("novas78@xda")
|
||||
),
|
||||
TranslationInfo(
|
||||
"French",
|
||||
sequenceOf("Just Humeau")
|
||||
),
|
||||
TranslationInfo(
|
||||
"German",
|
||||
sequenceOf("Oswald Boelcke", "wlls_ftn")
|
||||
),
|
||||
TranslationInfo(
|
||||
"Portuguese (BR)",
|
||||
sequenceOf("Lucas Lima")
|
||||
),
|
||||
TranslationInfo(
|
||||
"Spanish",
|
||||
sequenceOf("Alfredo Jara")
|
||||
),
|
||||
TranslationInfo(
|
||||
"Turkish",
|
||||
sequenceOf("Fatih Fırıncı")
|
||||
),
|
||||
TranslationInfo(
|
||||
"Vietnamese",
|
||||
sequenceOf("pnhpnh")
|
||||
)
|
||||
)
|
||||
)
|
||||
|
||||
fun getLicenses() = ThirdPartyAdapter(
|
||||
listOf(
|
||||
ThirdParty(
|
||||
"Android SDK License",
|
||||
R.raw.android_sdk
|
||||
),
|
||||
ThirdParty(
|
||||
"Material Design Icons",
|
||||
R.raw.apache2
|
||||
),
|
||||
ThirdParty(
|
||||
"Dagger",
|
||||
R.raw.apache2
|
||||
),
|
||||
ThirdParty(
|
||||
"Moshi",
|
||||
R.raw.apache2
|
||||
),
|
||||
ThirdParty(
|
||||
"Mockito",
|
||||
R.raw.mockito
|
||||
),
|
||||
ThirdParty(
|
||||
"Sounds",
|
||||
R.raw.sounds
|
||||
)
|
||||
)
|
||||
)
|
||||
}
|
|
@ -0,0 +1,49 @@
|
|||
package dev.lucasnlm.antimine.about.views
|
||||
|
||||
import android.os.Bundle
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import androidx.fragment.app.Fragment
|
||||
import androidx.lifecycle.ViewModelProviders
|
||||
import dev.lucasnlm.antimine.BuildConfig
|
||||
import dev.lucasnlm.antimine.R
|
||||
import dev.lucasnlm.antimine.about.models.AboutEvent
|
||||
import dev.lucasnlm.antimine.about.viewmodel.AboutViewModel
|
||||
import kotlinx.android.synthetic.main.fragment_about_info.*
|
||||
|
||||
class AboutInfoFragment : Fragment() {
|
||||
private var aboutViewModel: AboutViewModel? = null
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
activity?.run {
|
||||
aboutViewModel = ViewModelProviders.of(this).get(AboutViewModel::class.java)
|
||||
}
|
||||
}
|
||||
|
||||
override fun onCreateView(
|
||||
inflater: LayoutInflater,
|
||||
container: ViewGroup?,
|
||||
savedInstanceState: Bundle?
|
||||
): View? =
|
||||
inflater.inflate(R.layout.fragment_about_info, container, false)
|
||||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
|
||||
version.text = getString(R.string.version_s, BuildConfig.VERSION_NAME)
|
||||
|
||||
thirdsParties.setOnClickListener {
|
||||
aboutViewModel?.eventObserver?.postValue(AboutEvent.ThirdPartyLicenses)
|
||||
}
|
||||
|
||||
sourceCode.setOnClickListener {
|
||||
aboutViewModel?.eventObserver?.postValue(AboutEvent.SourceCode)
|
||||
}
|
||||
|
||||
translation.setOnClickListener {
|
||||
aboutViewModel?.eventObserver?.postValue(AboutEvent.Translators)
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,46 @@
|
|||
package dev.lucasnlm.antimine.about.views.thirds
|
||||
|
||||
import android.os.Bundle
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import androidx.fragment.app.Fragment
|
||||
import androidx.lifecycle.ViewModelProviders
|
||||
import androidx.recyclerview.widget.DividerItemDecoration
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
|
||||
import dev.lucasnlm.antimine.R
|
||||
import dev.lucasnlm.antimine.about.viewmodel.AboutViewModel
|
||||
import kotlinx.android.synthetic.main.fragment_third_party.*
|
||||
|
||||
class ThirdPartiesFragment : Fragment() {
|
||||
private var aboutViewModel: AboutViewModel? = null
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
activity?.run {
|
||||
aboutViewModel = ViewModelProviders.of(this).get(AboutViewModel::class.java)
|
||||
}
|
||||
}
|
||||
|
||||
override fun onCreateView(
|
||||
inflater: LayoutInflater,
|
||||
container: ViewGroup?,
|
||||
savedInstanceState: Bundle?
|
||||
): View? =
|
||||
inflater.inflate(R.layout.fragment_third_party, container, false)
|
||||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
|
||||
licenses.apply {
|
||||
setHasFixedSize(true)
|
||||
addItemDecoration(
|
||||
DividerItemDecoration(context, DividerItemDecoration.VERTICAL)
|
||||
)
|
||||
layoutManager = LinearLayoutManager(context)
|
||||
}
|
||||
|
||||
licenses.adapter = aboutViewModel?.getLicenses()
|
||||
}
|
||||
}
|
|
@ -0,0 +1,40 @@
|
|||
package dev.lucasnlm.antimine.about.views.thirds
|
||||
|
||||
import android.content.Intent
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import android.view.LayoutInflater
|
||||
import android.view.ViewGroup
|
||||
import dev.lucasnlm.antimine.R
|
||||
|
||||
import dev.lucasnlm.antimine.about.Constants
|
||||
import dev.lucasnlm.antimine.about.TextActivity
|
||||
import dev.lucasnlm.antimine.about.models.ThirdParty
|
||||
|
||||
class ThirdPartyAdapter(
|
||||
private val thirdParties: List<ThirdParty>
|
||||
) : RecyclerView.Adapter<ThirdPartyViewHolder>() {
|
||||
|
||||
override fun getItemCount(): Int = thirdParties.size
|
||||
|
||||
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ThirdPartyViewHolder {
|
||||
val view = LayoutInflater
|
||||
.from(parent.context)
|
||||
.inflate(R.layout.view_third_party, parent, false)
|
||||
return ThirdPartyViewHolder(view)
|
||||
}
|
||||
|
||||
override fun onBindViewHolder(holder: ThirdPartyViewHolder, position: Int) {
|
||||
val thirdParty = thirdParties[position]
|
||||
holder.apply {
|
||||
title.text = thirdParty.name
|
||||
itemView.setOnClickListener { view ->
|
||||
val intent = Intent(view.context, TextActivity::class.java).apply {
|
||||
putExtra(Constants.TEXT_TITLE, thirdParty.name)
|
||||
putExtra(Constants.TEXT_PATH, thirdParty.license)
|
||||
}
|
||||
|
||||
view.context.startActivity(intent)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
|
@ -1,4 +1,4 @@
|
|||
package dev.lucasnlm.antimine.about.thirds.view
|
||||
package dev.lucasnlm.antimine.about.views.thirds
|
||||
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import android.view.View
|
||||
|
@ -6,6 +6,6 @@ import android.widget.TextView
|
|||
|
||||
import dev.lucasnlm.antimine.R
|
||||
|
||||
internal class ThirdPartyItemHolder(view: View) : RecyclerView.ViewHolder(view) {
|
||||
class ThirdPartyViewHolder(view: View) : RecyclerView.ViewHolder(view) {
|
||||
val title: TextView = view.findViewById(R.id.third_name)
|
||||
}
|
|
@ -0,0 +1,28 @@
|
|||
package dev.lucasnlm.antimine.about.views.translators
|
||||
|
||||
import android.view.LayoutInflater
|
||||
import android.view.ViewGroup
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import dev.lucasnlm.antimine.R
|
||||
import dev.lucasnlm.antimine.about.models.TranslationInfo
|
||||
|
||||
class TranslatorsAdapter(
|
||||
private val translators: List<TranslationInfo>
|
||||
) : RecyclerView.Adapter<TranslatorsViewHolder>() {
|
||||
|
||||
override fun getItemCount(): Int = translators.size
|
||||
|
||||
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): TranslatorsViewHolder {
|
||||
val view = LayoutInflater
|
||||
.from(parent.context)
|
||||
.inflate(R.layout.view_translator, parent, false)
|
||||
return TranslatorsViewHolder(view)
|
||||
}
|
||||
|
||||
override fun onBindViewHolder(holder: TranslatorsViewHolder, position: Int) {
|
||||
with(translators[position]) {
|
||||
holder.language.text = language
|
||||
holder.translators.text = translators.joinToString("\n")
|
||||
}
|
||||
}
|
||||
}
|
|
@ -0,0 +1,44 @@
|
|||
package dev.lucasnlm.antimine.about.views.translators
|
||||
|
||||
import android.os.Bundle
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import androidx.fragment.app.Fragment
|
||||
import androidx.lifecycle.ViewModelProviders
|
||||
import androidx.recyclerview.widget.DividerItemDecoration
|
||||
import androidx.recyclerview.widget.LinearLayoutManager
|
||||
import dev.lucasnlm.antimine.R
|
||||
import dev.lucasnlm.antimine.about.viewmodel.AboutViewModel
|
||||
import kotlinx.android.synthetic.main.fragment_translators.*
|
||||
|
||||
class TranslatorsFragment : Fragment() {
|
||||
private var aboutViewModel: AboutViewModel? = null
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
activity?.run {
|
||||
aboutViewModel = ViewModelProviders.of(this).get(AboutViewModel::class.java)
|
||||
}
|
||||
}
|
||||
|
||||
override fun onCreateView(
|
||||
inflater: LayoutInflater,
|
||||
container: ViewGroup?,
|
||||
savedInstanceState: Bundle?
|
||||
): View? =
|
||||
inflater.inflate(R.layout.fragment_translators, container, false)
|
||||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
|
||||
translators.apply {
|
||||
addItemDecoration(
|
||||
DividerItemDecoration(view.context, DividerItemDecoration.VERTICAL)
|
||||
)
|
||||
layoutManager = LinearLayoutManager(view.context)
|
||||
}
|
||||
|
||||
translators.adapter = aboutViewModel?.getTranslators()
|
||||
}
|
||||
}
|
|
@ -0,0 +1,11 @@
|
|||
package dev.lucasnlm.antimine.about.views.translators
|
||||
|
||||
import android.view.View
|
||||
import android.widget.TextView
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import dev.lucasnlm.antimine.R
|
||||
|
||||
class TranslatorsViewHolder(view: View) : RecyclerView.ViewHolder(view) {
|
||||
val language: TextView = view.findViewById(R.id.language)
|
||||
val translators: TextView = view.findViewById(R.id.translators)
|
||||
}
|
|
@ -10,17 +10,17 @@ import dev.lucasnlm.antimine.R
|
|||
class PreferencesActivity : AppCompatActivity() {
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
setContentView(R.layout.activity_empty)
|
||||
PreferenceManager.setDefaultValues(this, R.xml.preferences, false)
|
||||
|
||||
// Load the preferences from an XML resource
|
||||
supportFragmentManager
|
||||
.beginTransaction()
|
||||
.replace(android.R.id.content, PrefsFragment())
|
||||
.commitAllowingStateLoss()
|
||||
.beginTransaction()
|
||||
.replace(R.id.content, PrefsFragment())
|
||||
.commitAllowingStateLoss()
|
||||
}
|
||||
|
||||
class PrefsFragment : PreferenceFragmentCompat() {
|
||||
|
||||
override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) {
|
||||
// Load the preferences from an XML resource
|
||||
addPreferencesFromResource(R.xml.preferences)
|
||||
|
|
8
app/src/main/res/layout/activity_empty.xml
Normal file
8
app/src/main/res/layout/activity_empty.xml
Normal file
|
@ -0,0 +1,8 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:id="@+id/content"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:fitsSystemWindows="true"
|
||||
tools:context="dev.lucasnlm.antimine.about.AboutActivity" />
|
|
@ -48,18 +48,18 @@
|
|||
android:drawableStart="@drawable/timer"
|
||||
android:drawableLeft="@drawable/timer"
|
||||
android:drawablePadding="8dp"
|
||||
android:drawableTint="?android:attr/textColorPrimary"
|
||||
android:gravity="center_vertical"
|
||||
android:includeFontPadding="false"
|
||||
android:visibility="gone"
|
||||
android:minEms="2"
|
||||
android:drawableTint="?android:attr/textColorPrimary"
|
||||
android:text="@string/default_time_value"
|
||||
android:textColor="?android:attr/textColorPrimary"
|
||||
android:textSize="@dimen/text_size"
|
||||
android:textStyle="bold"
|
||||
android:text="@string/default_time_value"
|
||||
tools:visibility="visible"
|
||||
android:visibility="gone"
|
||||
tools:targetApi="m"
|
||||
tools:text="10:00"
|
||||
tools:targetApi="m" />
|
||||
tools:visibility="visible" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/minesCount"
|
||||
|
@ -69,17 +69,17 @@
|
|||
android:drawableStart="@drawable/mine"
|
||||
android:drawableLeft="@drawable/mine"
|
||||
android:drawablePadding="8dp"
|
||||
android:drawableTint="?android:attr/textColorPrimary"
|
||||
android:gravity="center_vertical"
|
||||
android:includeFontPadding="false"
|
||||
android:minEms="3"
|
||||
android:drawableTint="?android:attr/textColorPrimary"
|
||||
android:textColor="?android:attr/textColorPrimary"
|
||||
android:textSize="@dimen/text_size"
|
||||
android:textStyle="bold"
|
||||
android:visibility="gone"
|
||||
tools:visibility="visible"
|
||||
tools:targetApi="m"
|
||||
tools:text="99"
|
||||
tools:targetApi="m" />
|
||||
tools:visibility="visible" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
|
@ -93,15 +93,15 @@
|
|||
android:id="@+id/install"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:contentDescription="@string/install"
|
||||
android:layout_margin="16dp"
|
||||
android:layout_alignParentBottom="true"
|
||||
android:layout_alignParentRight="true"
|
||||
android:layout_alignParentEnd="true"
|
||||
android:layout_alignParentRight="true"
|
||||
android:layout_alignParentBottom="true"
|
||||
android:layout_margin="16dp"
|
||||
android:contentDescription="@string/install"
|
||||
android:visibility="gone"
|
||||
app:backgroundTint="@color/install_button"
|
||||
app:pressedTranslationZ="6dp"
|
||||
app:elevation="10dp"
|
||||
app:pressedTranslationZ="6dp"
|
||||
app:srcCompat="@drawable/install"
|
||||
tools:visibility="visible"/>
|
||||
|
||||
|
|
|
@ -3,7 +3,8 @@
|
|||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
android:layout_height="match_parent"
|
||||
android:fitsSystemWindows="true">
|
||||
|
||||
<ScrollView
|
||||
android:id="@+id/scrollView"
|
||||
|
@ -18,9 +19,9 @@
|
|||
|
||||
<TextView
|
||||
android:id="@+id/textView"
|
||||
android:textColor="?android:attr/textColorPrimary"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent" />
|
||||
android:layout_height="match_parent"
|
||||
android:textColor="?android:attr/textColorPrimary" />
|
||||
|
||||
</FrameLayout>
|
||||
</ScrollView>
|
||||
|
@ -36,4 +37,5 @@
|
|||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
||||
|
|
|
@ -13,28 +13,43 @@
|
|||
android:layout_height="wrap_content"
|
||||
android:adjustViewBounds="true"
|
||||
android:contentDescription="@string/app_name"
|
||||
android:src="@drawable/title"
|
||||
app:layout_constraintBottom_toTopOf="@+id/version"
|
||||
app:layout_constraintBottom_toTopOf="@+id/version_layout"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintHorizontal_bias="0.5"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:srcCompat="@drawable/title" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/version"
|
||||
android:layout_width="wrap_content"
|
||||
<LinearLayout
|
||||
android:id="@+id/version_layout"
|
||||
android:layout_width="0dp"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="center_horizontal"
|
||||
android:padding="16dp"
|
||||
android:textAppearance="?android:attr/textAppearanceMedium"
|
||||
android:textColor="?android:attr/textColorPrimary"
|
||||
android:textStyle="bold"
|
||||
android:orientation="vertical"
|
||||
app:layout_constraintBottom_toTopOf="@+id/buttons"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintHorizontal_bias="0.5"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/logo"
|
||||
tools:text="Anti-mine - Version 1.0" />
|
||||
app:layout_constraintTop_toBottomOf="@+id/logo">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/app_name"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:layout_marginBottom="4dp"
|
||||
android:text="@string/app_name"
|
||||
android:textAppearance="?android:attr/textAppearanceMedium"
|
||||
android:textColor="?android:attr/textColorPrimary"
|
||||
android:textStyle="bold" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/version"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:textAppearance="?android:attr/textAppearanceMedium"
|
||||
android:textColor="?android:attr/textColorPrimary"
|
||||
tools:text="Version 7.1.0" />
|
||||
</LinearLayout>
|
||||
|
||||
<LinearLayout
|
||||
android:id="@+id/buttons"
|
||||
|
@ -44,7 +59,7 @@
|
|||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintEnd_toEndOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/version">
|
||||
app:layout_constraintTop_toBottomOf="@+id/version_layout">
|
||||
|
||||
<Button
|
||||
android:id="@+id/thirdsParties"
|
||||
|
@ -55,7 +70,18 @@
|
|||
|
||||
<Space
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="8dp"/>
|
||||
android:layout_height="4dp" />
|
||||
|
||||
<Button
|
||||
android:id="@+id/translation"
|
||||
style="?android:attr/borderlessButtonStyle"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/translation" />
|
||||
|
||||
<Space
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="4dp" />
|
||||
|
||||
<Button
|
||||
android:id="@+id/sourceCode"
|
||||
|
@ -63,6 +89,7 @@
|
|||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:text="@string/source_code" />
|
||||
|
||||
</LinearLayout>
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
|
@ -6,17 +6,20 @@
|
|||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:fitsSystemWindows="false"
|
||||
tools:context="dev.lucasnlm.antimine.about.thirds.ThirdPartiesActivity">
|
||||
tools:context="dev.lucasnlm.antimine.about.views.thirds.ThirdPartiesFragment">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/description"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:padding="16dp"
|
||||
android:textColor="?android:attr/textColorPrimary"
|
||||
android:paddingLeft="16dp"
|
||||
android:paddingTop="24dp"
|
||||
android:paddingRight="16dp"
|
||||
android:paddingBottom="24dp"
|
||||
android:text="@string/used_software_text"
|
||||
android:id="@+id/summary"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent" />
|
||||
android:textColor="?android:attr/textColorPrimary"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<androidx.recyclerview.widget.RecyclerView
|
||||
android:id="@+id/licenses"
|
||||
|
@ -26,6 +29,6 @@
|
|||
android:overScrollMode="never"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/summary" />
|
||||
app:layout_constraintTop_toBottomOf="@+id/description" />
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
34
app/src/main/res/layout/fragment_translators.xml
Normal file
34
app/src/main/res/layout/fragment_translators.xml
Normal file
|
@ -0,0 +1,34 @@
|
|||
<?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:layout_width="match_parent"
|
||||
android:layout_height="match_parent"
|
||||
android:fitsSystemWindows="false"
|
||||
tools:context="dev.lucasnlm.antimine.about.views.translators.TranslatorsFragment">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/description"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:paddingLeft="16dp"
|
||||
android:paddingTop="24dp"
|
||||
android:paddingRight="16dp"
|
||||
android:paddingBottom="24dp"
|
||||
android:text="@string/translators_text"
|
||||
android:textColor="?android:attr/textColorPrimary"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent" />
|
||||
|
||||
<androidx.recyclerview.widget.RecyclerView
|
||||
android:id="@+id/translators"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="0dp"
|
||||
android:clipToPadding="false"
|
||||
android:overScrollMode="never"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toBottomOf="@+id/description" />
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
|
@ -5,15 +5,16 @@
|
|||
xmlns:tools="http://schemas.android.com/tools"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:foreground="?android:attr/selectableItemBackground">
|
||||
android:foreground="?android:attr/selectableItemBackground"
|
||||
tools:targetApi="m">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/third_name"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:padding="16dp"
|
||||
android:textStyle="bold"
|
||||
android:textColor="?android:attr/textColorSecondary"
|
||||
android:textStyle="bold"
|
||||
app:layout_constraintStart_toStartOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
tools:text="Third Name" />
|
||||
|
|
34
app/src/main/res/layout/view_translator.xml
Normal file
34
app/src/main/res/layout/view_translator.xml
Normal file
|
@ -0,0 +1,34 @@
|
|||
<?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:layout_width="match_parent"
|
||||
android:layout_height="wrap_content"
|
||||
android:foreground="?android:attr/selectableItemBackground"
|
||||
android:padding="16dp"
|
||||
tools:targetApi="m">
|
||||
|
||||
<TextView
|
||||
android:id="@+id/language"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:textColor="?android:attr/textColorSecondary"
|
||||
android:textStyle="bold"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintLeft_toLeftOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
tools:text="Language" />
|
||||
|
||||
<TextView
|
||||
android:id="@+id/translators"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="wrap_content"
|
||||
android:gravity="end"
|
||||
android:textColor="?android:attr/textColorSecondary"
|
||||
app:layout_constraintBottom_toBottomOf="parent"
|
||||
app:layout_constraintRight_toRightOf="parent"
|
||||
app:layout_constraintTop_toTopOf="parent"
|
||||
tools:text="Person A\nPerson B" />
|
||||
|
||||
</androidx.constraintlayout.widget.ConstraintLayout>
|
|
@ -2,7 +2,6 @@
|
|||
<androidx.constraintlayout.widget.ConstraintLayout
|
||||
xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
||||
android:id="@+id/frameLayout"
|
||||
android:layout_width="match_parent"
|
||||
android:layout_height="match_parent">
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources xmlns:tools="http://schemas.android.com/tools" tools:locale="cs">
|
||||
<string name="app_name">Antimine</string>
|
||||
<string name="app_description">Musíte vyčistit obdélníkovou desku obsahující skryté miny, aniž by kterákoliv z nich vybuchla.</string>
|
||||
<string name="app_name">Anti-Mine</string>
|
||||
<string name="app_description">Musíte vyčistit obdélníkovou desku obsahující skryté \"miny\", aniž by kterákoliv z nich vybuchla.</string>
|
||||
<string name="remaining_mines">Zbývající miny</string>
|
||||
<string name="install">Instalovat</string>
|
||||
<string name="minefield">Obtížnost</string>
|
||||
|
@ -23,6 +23,7 @@
|
|||
<string name="resume">Pokračovat</string>
|
||||
<string name="show_licenses">Zobrazit licence</string>
|
||||
<string name="source_code">Zdrojový kód</string>
|
||||
<string name="translation">Překlad</string>
|
||||
<string name="licenses">Licence</string>
|
||||
<string name="google_play_games">Google Play Games</string>
|
||||
<string name="leaderboards">Žebříčky</string>
|
||||
|
@ -47,6 +48,7 @@
|
|||
<string name="flag_placed">Vlajka umístěna!</string>
|
||||
<string name="flag_removed">Vlajka odstraněna!</string>
|
||||
<string name="used_software_text">Tato hra používá následující software třetích stran:</string>
|
||||
<string name="translators_text">Tato hra byla přeložena těmito lidmi:</string>
|
||||
<string name="sign_in_failed">Nelze se přihlásit. Zkontrolujte síťové připojení a akci opakujte.</string>
|
||||
<string name="unknown_error">Neznámá chyba.</string>
|
||||
<string name="retry">Opakovat</string>
|
||||
|
@ -62,7 +64,7 @@
|
|||
<string name="share_body_text">Dokončil jsem %1$d/%2$d za %3$d sekund.</string>
|
||||
<string name="share_body_text_generic">Hraju %1$s</string>
|
||||
<string name="fail_to_share">Sdílení hra se nezdařilo</string>
|
||||
<string name="version_s">%1$s - %2$s</string>
|
||||
<string name="version_s">Verze %1$s</string>
|
||||
<string name="sound_effects">Zvukové efekty</string>
|
||||
<string name="quit">Ukončit</string>
|
||||
<string name="are_you_sure">Jste si jisti?</string>
|
||||
|
|
93
common/src/main/res/values-de/strings.xml
Normal file
93
common/src/main/res/values-de/strings.xml
Normal file
|
@ -0,0 +1,93 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources xmlns:tools="http://schemas.android.com/tools" tools:locale="de">
|
||||
<string name="app_name">Anti-Mine</string>
|
||||
<string name="app_description">Du musst eine rechteckige Tafel mit versteckten minen räumen, ohne dass eine davon explodiert.</string>
|
||||
<string name="remaining_mines">Verbleibende Minen</string>
|
||||
<string name="install">Installieren</string>
|
||||
<string name="minefield">Schwierigkeitsgrad</string>
|
||||
<string name="standard">Voreinstellung</string>
|
||||
<string name="beginner">Anfänger</string>
|
||||
<string name="intermediate">Mittleres Niveau</string>
|
||||
<string name="expert">Experte</string>
|
||||
<string name="open_menu">Menü öffnen</string>
|
||||
<string name="close_menu">Menü schließen</string>
|
||||
<string name="settings">Einstellungen</string>
|
||||
<string name="animations">Animationen</string>
|
||||
<string name="vibration">Haptische Rückmeldung</string>
|
||||
<string name="about">Über</string>
|
||||
<string name="no_network">Keine Internetverbindung.</string>
|
||||
<string name="events">Statisken</string>
|
||||
<string name="start_over">Neues Spiel</string>
|
||||
<string name="retry_sure">Wenn du ein neues Spiel startest,\nwird dein aktueller Verlauf verloren gehen.</string>
|
||||
<string name="cancel">Abbrechen</string>
|
||||
<string name="resume">Fortfahren</string>
|
||||
<string name="show_licenses">Lizenzen anzeigen</string>
|
||||
<string name="source_code">Quellcode</string>
|
||||
<string name="translation">Übersetzung</string>
|
||||
<string name="licenses">Lizenzen</string>
|
||||
<string name="google_play_games">Google Play Games</string>
|
||||
<string name="leaderboards">Ranglisten</string>
|
||||
<string name="connect">Verbinden</string>
|
||||
<string name="connecting">Verbindung wird hergestellt…</string>
|
||||
<string name="disconnect">Trennen</string>
|
||||
<string name="disconnected">Getrennt</string>
|
||||
<string name="new_game">Neues Spiel</string>
|
||||
<string name="share">Teilen</string>
|
||||
<string name="share_menu">Teilen…</string>
|
||||
<string name="new_game_request">Möchtest du ein neues Spiel beginnen?</string>
|
||||
<string name="yes">Ja</string>
|
||||
<string name="general">Allgemein</string>
|
||||
<string name="all_mines_disabled">Alle Minen wurden wirkungslos gemacht.</string>
|
||||
<string name="mines_remaining">%d Minen</string>
|
||||
<string name="game_time">Spielzeit</string>
|
||||
<string name="covered_field">Abgedecktes Feld</string>
|
||||
<string name="mine">Mine</string>
|
||||
<string name="exploded_mine">Explodierte Mine</string>
|
||||
<string name="game_started">Spiel wurde gestartet</string>
|
||||
<string name="you_exploded_a_mine">Du hast eine Mine zur Explosion gebracht!</string>
|
||||
<string name="flag_placed">Markierung platziert!</string>
|
||||
<string name="flag_removed">Markierung entfernt!</string>
|
||||
<string name="used_software_text">Dieses Spiel benutzt folgende Software von Drittanbietern:</string>
|
||||
<string name="translators_text">Dieses Spiel wurde von den folgenden Personen übersetzt:</string>
|
||||
<string name="sign_in_failed">Login fehlgeschlagen. Überprüfe Deine Netzwerkverbindung und versuche es erneut.</string>
|
||||
<string name="unknown_error">Unbekannter Fehler.</string>
|
||||
<string name="retry">Erneut versuchen</string>
|
||||
<string name="empty">Leer</string>
|
||||
<string name="quit_confirm">Du verlierst deinen aktuellen Spielfortschritt.\n Du kannst die Partie aber auch vor dem Beenden installieren.</string>
|
||||
<string name="you_won">Du hast gewonnen!</string>
|
||||
<string name="you_lost">Du hast verloren!</string>
|
||||
<string name="game_over_desc_0">Drücken lange auf das Quadrat, um die Flagge zu setzen.</string>
|
||||
<string name="game_over_desc_1">Viel Glück für dein nächstes Spiel.</string>
|
||||
<string name="game_over_desc_2">Du hast %1$d/%2$d in %3$d Sekunden gemacht.</string>
|
||||
<string name="game_over_desc_3">Du hast es fast geschafft!</string>
|
||||
<string name="game_over_desc_4">Du gast das Minenfeld in %1$d Sekunden vollendet.</string>
|
||||
<string name="share_body_text">Du hast %1$d/%2$d in %3$d Sekunden gemacht.</string>
|
||||
<string name="share_body_text_generic">Ich spiele %1$s</string>
|
||||
<string name="fail_to_share">Teilen des Spieles gescheitert</string>
|
||||
<string name="version_s">Version %1$s</string>
|
||||
<string name="sound_effects">Sound-Effekte</string>
|
||||
<string name="quit">Beenden</string>
|
||||
<string name="are_you_sure">Bist du sicher?</string>
|
||||
<string name="custom">Benutzerdefiniert</string>
|
||||
<string name="start">Start</string>
|
||||
<string name="width">Breite</string>
|
||||
<string name="height">Höhe</string>
|
||||
<string name="mines">Minen</string>
|
||||
<string name="auto_flag">Spielassistent</string>
|
||||
<string name="desc_convered_area">Bedeckte Fläche</string>
|
||||
<string name="desc_marked_area">Markierte Fläche</string>
|
||||
<string name="desc_question_area">Fragwürdige Fläche</string>
|
||||
<string name="desc_wrongly_marked_area">Falsch markierter Bereich</string>
|
||||
<string name="settings_general">Allgemein</string>
|
||||
<string name="settings_vibration_desc">Vibriert bei einer Explosion oder beim Umschalten der Flagge</string>
|
||||
<string name="settings_sound_desc">Erzeugt ein Explosionsgeräusch</string>
|
||||
<string name="settings_auto_flag_desc">Fügt bei aufgelösten Minen automatisch eine Flagge hinzu</string>
|
||||
<string name="settings_accessibility">Barrierefreiheit</string>
|
||||
<string name="settings_large_areas">Große Bereiche verwenden</string>
|
||||
<string name="settings_large_areas_desc">Vergrößert den Touchbereich</string>
|
||||
<string name="rating">Feedback</string>
|
||||
<string name="rating_menu">Feedback ❤</string>
|
||||
<string name="rating_message">Wenn dir dieses Spiel gefällt, gib uns bitte ein Feedback. Es wird uns sehr helfen.</string>
|
||||
<string name="rating_button">Ja ❤️️️</string>
|
||||
<string name="rating_button_no">Nein</string>
|
||||
</resources>
|
|
@ -1,95 +1,93 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources xmlns:tools="http://schemas.android.com/tools" tools:locale="es">
|
||||
<string name="app_name">Anti-Mine</string>
|
||||
<string name="app_description">Deshabilitar las minas ocultas del campo de minas.</string>
|
||||
<string name="remaining_mines">Minas Restantes</string>
|
||||
<resources xmlns:tools="http://schemas.android.com/tools" tools:locale="es-rES">
|
||||
<string name="app_name">Anti-Mina</string>
|
||||
<string name="app_description">Usted tiene que limpiar un tablero cuadrado que contiene minas escondidas sin detornarlas.</string>
|
||||
<string name="remaining_mines">Minas restantes</string>
|
||||
<string name="install">Instalar</string>
|
||||
<string name="minefield">Dificultad</string>
|
||||
<string name="standard">Estándar</string>
|
||||
<string name="beginner">Principiante</string>
|
||||
<string name="intermediate">Intermediario</string>
|
||||
<string name="expert">Especialista</string>
|
||||
<string name="open_menu">Abrir Menú</string>
|
||||
<string name="close_menu">Cerrar Menú</string>
|
||||
<string name="settings">Ajustes</string>
|
||||
<string name="standard">Patrón</string>
|
||||
<string name="beginner">Novato</string>
|
||||
<string name="intermediate">Intermedio</string>
|
||||
<string name="expert">Experto</string>
|
||||
<string name="open_menu">Abra menú</string>
|
||||
<string name="close_menu">Cerrar menú</string>
|
||||
<string name="settings">Configuración</string>
|
||||
<string name="animations">Animaciones</string>
|
||||
<string name="vibration">Respuesta táctil</string>
|
||||
<string name="vibration">Respuesta háptica</string>
|
||||
<string name="about">Acerca de</string>
|
||||
<string name="no_network">Sin conexión a Internet.</string>
|
||||
<string name="events">Estadística</string>
|
||||
<string name="start_over">Nuevo juego</string>
|
||||
<string name="retry_sure">Si iniciar un nuevo juego\nse perderá su progreso actual.</string>
|
||||
<string name="no_network">No hay conexión a Internet.</string>
|
||||
<string name="events">Estadísticas</string>
|
||||
<string name="start_over">Nuevo Juego</string>
|
||||
<string name="retry_sure">Si comienzas una partida nueva,\ntu progreso actual se perderá.</string>
|
||||
<string name="cancel">Cancelar</string>
|
||||
<string name="resume">Continuar</string>
|
||||
<string name="show_licenses">Mostrar Licencias</string>
|
||||
<string name="show_licenses">Ver Licencias</string>
|
||||
<string name="source_code">Código Fuente</string>
|
||||
<string name="translation">Traducción</string>
|
||||
<string name="licenses">Licencias</string>
|
||||
<string name="google_play_games">Google Play Games</string>
|
||||
<string name="leaderboards">Tablas de Clasificación</string>
|
||||
<string name="leaderboards">Ránking</string>
|
||||
<string name="connect">Conectar</string>
|
||||
<string name="connecting">Conectando…</string>
|
||||
<string name="disconnect">Desconectar</string>
|
||||
<string name="disconnected">Desconectado</string>
|
||||
<string name="new_game">Nuevo juego</string>
|
||||
<string name="new_game">Nuevo Juego</string>
|
||||
<string name="share">Compartir</string>
|
||||
<string name="share_menu">Compartir…</string>
|
||||
<string name="new_game_request">¿Quieres iniciar un nuevo juego?</string>
|
||||
<string name="new_game_request">¿Deseas empezar una nueva partida?</string>
|
||||
<string name="yes">Sí</string>
|
||||
<string name="general">General</string>
|
||||
<string name="all_mines_disabled">Todas las minas fueron desactivadas.</string>
|
||||
<string name="mines_remaining">%d minas</string>
|
||||
<string name="game_time">Tiempo de juego</string>
|
||||
<string name="covered_field">Campo Cubierto</string>
|
||||
<string name="covered_field">Campo cubierto</string>
|
||||
<string name="mine">Mina</string>
|
||||
<string name="exploded_mine">Mina despiezada</string>
|
||||
<string name="game_started">El juego comienza ahora</string>
|
||||
<string name="you_exploded_a_mine">¡Usted ha estallado una mina!</string>
|
||||
<string name="flag_placed">Bandera colocada!</string>
|
||||
<string name="flag_removed">Bandera retirada!</string>
|
||||
<string name="used_software_text">Este juego utiliza el siguiente software:</string>
|
||||
<string name="sign_in_failed">No se ha podido iniciar sesión. Por favor, compruebe la conexión de red y vuelve a intentarlo.</string>
|
||||
<string name="exploded_mine">Mina Explotada</string>
|
||||
<string name="game_started">Inicio de Juego</string>
|
||||
<string name="you_exploded_a_mine">¡Has explotado una mina!</string>
|
||||
<string name="flag_placed">¡Bandera colocada!</string>
|
||||
<string name="flag_removed">¡Bandera eliminada!</string>
|
||||
<string name="used_software_text">Este juego utiliza el siguiente software de terceros:</string>
|
||||
<string name="translators_text">Este juego fue traducido por las siguientes personas:</string>
|
||||
<string name="sign_in_failed">Imposible conectar. Por favor, revisa tu conexión de datos e inténtalo nuevamente.</string>
|
||||
<string name="unknown_error">Error desconocido.</string>
|
||||
<string name="retry">Rever</string>
|
||||
<string name="retry">Reintentar</string>
|
||||
<string name="empty">Vacío</string>
|
||||
<string name="quit_confirm">Perderá todos los movimientos en el juego actual.\nPero también puedes instalar el juego antes de salir.</string>
|
||||
<string name="quit_confirm">Vas a perder todas los movimientos en la partida acutal.\nPero también puedes instalar el juego antes de salir.</string>
|
||||
<string name="you_won">¡Ganaste!</string>
|
||||
<string name="you_lost">¡Perdiste!</string>
|
||||
<string name="game_over_desc_0">Mantenga presionada un área para marcarla.</string>
|
||||
<string name="game_over_desc_1">Buena suerte en el próximo juego.</string>
|
||||
<string name="game_over_desc_0">Mantenga presionado un cuadrado para poner una bandera.</string>
|
||||
<string name="game_over_desc_1">Buena suerte en tu próxima partida.</string>
|
||||
<string name="game_over_desc_2">Hiciste %1$d/%2$d en %3$d segundos.</string>
|
||||
<string name="game_over_desc_3">¡Fue cerca! Sabes como hacerlo.</string>
|
||||
<string name="game_over_desc_4">Terminaste el campo en %1$d segundos.</string>
|
||||
<string name="game_over_desc_3">¡Casi lo ha conseguido!</string>
|
||||
<string name="game_over_desc_4">Has terminado el campo de minas en %1$d segundos.</string>
|
||||
<string name="share_body_text">Hice %1$d/%2$d en %3$d segundos.</string>
|
||||
<string name="share_body_text_generic">Estoy jugando %1$s</string>
|
||||
<string name="fail_to_share">No se pudo compartir el juego</string>
|
||||
<string name="version_s">%1$s - %2$s</string>
|
||||
<string name="sound_effects">Efectos de Sonido</string>
|
||||
<string name="quit">Dejar</string>
|
||||
<string name="fail_to_share">Falla en compartir el juego</string>
|
||||
<string name="version_s">Versión %1$s</string>
|
||||
<string name="sound_effects">Efectos Sonoros</string>
|
||||
<string name="quit">Salir</string>
|
||||
<string name="are_you_sure">¿Estás seguro?</string>
|
||||
|
||||
<string name="custom">Personalizado</string>
|
||||
<string name="start">Empezar</string>
|
||||
<string name="width">Anchura</string>
|
||||
<string name="height">Altura</string>
|
||||
<string name="width">Ancho</string>
|
||||
<string name="height">Alto</string>
|
||||
<string name="mines">Minas</string>
|
||||
<string name="auto_flag">Bandera Automática</string>
|
||||
|
||||
<string name="auto_flag">Asistente de Juego</string>
|
||||
<string name="desc_convered_area">Área cubierta</string>
|
||||
<string name="desc_marked_area">Área marcada</string>
|
||||
<string name="desc_question_area">Área dudosa</string>
|
||||
<string name="desc_wrongly_marked_area">Área marcada incorrectamente</string>
|
||||
|
||||
<string name="settings_general">General</string>
|
||||
<string name="settings_vibration_desc">Vibra al explotar o al alternar la marcacion</string>
|
||||
<string name="settings_vibration_desc">Vibrar al activar la explosión o la bandera</string>
|
||||
<string name="settings_sound_desc">Hace un sonido de explosión</string>
|
||||
<string name="settings_auto_flag_desc">Agrega una marca en minas resueltas automáticamente</string>
|
||||
<string name="settings_auto_flag_desc">Añade una bandera en minas resueltas automáticamente</string>
|
||||
<string name="settings_accessibility">Accesibilidad</string>
|
||||
<string name="settings_large_areas">Use áreas grandes</string>
|
||||
<string name="settings_large_areas_desc">Aumenta el área táctil</string>
|
||||
|
||||
<string name="rating">Nos califica</string>
|
||||
<string name="rating_menu">Nos califica ❤</string>
|
||||
<string name="rating_message">Si te gusta este juego, danos un comentario. Nos ayudará mucho.</string>
|
||||
<string name="rating_button">Si ❤️️️</string>
|
||||
<string name="settings_large_areas">Usar áreas grandes</string>
|
||||
<string name="settings_large_areas_desc">Aumenta la zona táctil</string>
|
||||
<string name="rating">Comentarios</string>
|
||||
<string name="rating_menu">Comentarios ❤</string>
|
||||
<string name="rating_message">Si te gusta este juego, por favor danos un comentario. Nos ayudará mucho.</string>
|
||||
<string name="rating_button">Sí ❤️️️</string>
|
||||
<string name="rating_button_no">No</string>
|
||||
</resources>
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources xmlns:tools="http://schemas.android.com/tools" tools:locale="fr">
|
||||
<string name="app_name">Anti-Mine</string>
|
||||
<string name="app_description">Vous devez vider un tableau rectangulaire contenant des mines cachées sans en détonner.</string>
|
||||
<string name="app_description">Vous devez vider un tableau rectangulaire contenant des \"mines\" cachées sans en détonner.</string>
|
||||
<string name="remaining_mines">Mines restantes</string>
|
||||
<string name="install">Installer</string>
|
||||
<string name="minefield">Difficulté</string>
|
||||
|
@ -23,6 +23,7 @@
|
|||
<string name="resume">Reprendre</string>
|
||||
<string name="show_licenses">Montrer les licenses</string>
|
||||
<string name="source_code">Code source</string>
|
||||
<string name="translation">Traduction</string>
|
||||
<string name="licenses">Licences</string>
|
||||
<string name="google_play_games">Google Play Games</string>
|
||||
<string name="leaderboards">Classements</string>
|
||||
|
@ -33,7 +34,7 @@
|
|||
<string name="new_game">Nouvelle partie</string>
|
||||
<string name="share">Partager</string>
|
||||
<string name="share_menu">Partager…</string>
|
||||
<string name="new_game_request">Voulez-vous commencer une nouvelle partie?</string>
|
||||
<string name="new_game_request">Voulez-vous commencer une nouvelle partie ?</string>
|
||||
<string name="yes">Oui</string>
|
||||
<string name="general">Général</string>
|
||||
<string name="all_mines_disabled">Toutes les mines ont été désamorcées.</string>
|
||||
|
@ -43,10 +44,11 @@
|
|||
<string name="mine">Mine</string>
|
||||
<string name="exploded_mine">Mine explosée</string>
|
||||
<string name="game_started">La partie a commencé</string>
|
||||
<string name="you_exploded_a_mine">Vous avez touché une mine!</string>
|
||||
<string name="you_exploded_a_mine">Vous avez touché une mine !</string>
|
||||
<string name="flag_placed">Drapeau placé !</string>
|
||||
<string name="flag_removed">Drapeau retiré !</string>
|
||||
<string name="used_software_text">Ce jeu utilise ces logiciels tiers suivants :</string>
|
||||
<string name="translators_text">Ce jeu a été traduit par les personnes suivantes :</string>
|
||||
<string name="sign_in_failed">Erreur lors de la connexion. Vérifiez l\'état de votre connexion Internet et réessayez.</string>
|
||||
<string name="unknown_error">Erreur inconnue.</string>
|
||||
<string name="retry">Réessayer</string>
|
||||
|
@ -62,10 +64,10 @@
|
|||
<string name="share_body_text">J\'ai obtenu le score de %1$d/%2$d en %3$d secondes.</string>
|
||||
<string name="share_body_text_generic">Je joue à %1$s</string>
|
||||
<string name="fail_to_share">Échec du partage de la partie</string>
|
||||
<string name="version_s">%1$s à %2$s</string>
|
||||
<string name="version_s">Version %1$s</string>
|
||||
<string name="sound_effects">Effets sonores</string>
|
||||
<string name="quit">Quitter</string>
|
||||
<string name="are_you_sure">Vraiment?</string>
|
||||
<string name="are_you_sure">Vraiment ?</string>
|
||||
<string name="custom">Personnalisé</string>
|
||||
<string name="start">Commencer</string>
|
||||
<string name="width">Largeur</string>
|
||||
|
|
|
@ -22,7 +22,6 @@
|
|||
<color name="text_color">#FFFFFF</color>
|
||||
<color name="highlight">#FFFFFF</color>
|
||||
|
||||
<color name="stroke_cover">#757575</color>
|
||||
<color name="view_cover">#171717</color>
|
||||
<color name="view_clean">#ff424242</color>
|
||||
|
||||
|
|
|
@ -23,6 +23,7 @@
|
|||
<string name="resume">Continuar</string>
|
||||
<string name="show_licenses">Mostar Licenças</string>
|
||||
<string name="source_code">Código Fonte</string>
|
||||
<string name="translation">Tradução</string>
|
||||
<string name="licenses">Licenças</string>
|
||||
<string name="google_play_games">Google Play Games</string>
|
||||
<string name="leaderboards">Placares</string>
|
||||
|
@ -47,6 +48,7 @@
|
|||
<string name="flag_placed">Bandeira posicionada!</string>
|
||||
<string name="flag_removed">Bandeira removida!</string>
|
||||
<string name="used_software_text">Esse jogo foi desenvolvido utilizando as seguintes bibliotecas:</string>
|
||||
<string name="translators_text">Esse jogo foi traduzido pelas seguintes pessoas:</string>
|
||||
<string name="sign_in_failed">Falha ao conectar. Por favor, verifique sua conexão com a internet e tente novamente.</string>
|
||||
<string name="unknown_error">Erro desconhecido.</string>
|
||||
<string name="retry">Reiniciar</string>
|
||||
|
@ -62,23 +64,20 @@
|
|||
<string name="share_body_text">Eu fiz %1$d/%2$d em %3$d segundos.</string>
|
||||
<string name="share_body_text_generic">Estou jogando %1$s</string>
|
||||
<string name="fail_to_share">Falha ao compartilhar jogo</string>
|
||||
<string name="version_s">%1$s - %2$s</string>
|
||||
<string name="version_s">Versão %1$s</string>
|
||||
<string name="sound_effects">Efeitos Sonoros</string>
|
||||
<string name="quit">Sair</string>
|
||||
<string name="are_you_sure">Você tem certeza?</string>
|
||||
|
||||
<string name="custom">Personalizado</string>
|
||||
<string name="start">Iniciar</string>
|
||||
<string name="width">Largura</string>
|
||||
<string name="height">Altura</string>
|
||||
<string name="mines">Minas</string>
|
||||
<string name="auto_flag">Bandeiras Automáticas</string>
|
||||
|
||||
<string name="desc_convered_area">Área coberta</string>
|
||||
<string name="desc_marked_area">Área marcada</string>
|
||||
<string name="desc_question_area">Área duvidosa</string>
|
||||
<string name="desc_wrongly_marked_area">Área marcada erroneamente</string>
|
||||
|
||||
<string name="settings_general">Geral</string>
|
||||
<string name="settings_vibration_desc">Vibra ao explodir ou alternar marcação</string>
|
||||
<string name="settings_sound_desc">Faz um som ao explodir</string>
|
||||
|
@ -86,7 +85,6 @@
|
|||
<string name="settings_accessibility">Acessibilidade</string>
|
||||
<string name="settings_large_areas">Usar Área Grande</string>
|
||||
<string name="settings_large_areas_desc">Aumenta a área tocável</string>
|
||||
|
||||
<string name="rating">Avalie o app</string>
|
||||
<string name="rating_menu">Avaliar o app ❤</string>
|
||||
<string name="rating_message">Se você está gostando do jogo, por favor deixe um comentário! Isso nos ajuda muito.</string>
|
||||
|
|
|
@ -23,6 +23,7 @@
|
|||
<string name="resume">Devam et</string>
|
||||
<string name="show_licenses">Lisansları Göster</string>
|
||||
<string name="source_code">Kaynak Kodu</string>
|
||||
<string name="translation">Çeviri</string>
|
||||
<string name="licenses">Lisanslar</string>
|
||||
<string name="google_play_games">Google Play Oyunlar</string>
|
||||
<string name="leaderboards">Liderlik Tablosu</string>
|
||||
|
@ -47,6 +48,7 @@
|
|||
<string name="flag_placed">Bayrak yerleştirildi!</string>
|
||||
<string name="flag_removed">Bayrak kaldırıldı!</string>
|
||||
<string name="used_software_text">Bu oyun aşağıdaki üçüncü taraf yazılımlarını kullanır:</string>
|
||||
<string name="translators_text">Bu oyun aşağıdaki kişi tarafından çevrilmiştir: </string>
|
||||
<string name="sign_in_failed">Oturum açılamadı. Lütfen ağ bağlantınızı kontrol edip tekrar deneyin.</string>
|
||||
<string name="unknown_error">Bilinmeyen hata.</string>
|
||||
<string name="retry">Yeniden dene</string>
|
||||
|
@ -62,7 +64,7 @@
|
|||
<string name="share_body_text">%3$d saniyede %1$d/%2$d yaptım.</string>
|
||||
<string name="share_body_text_generic">%1$s oynuyorum</string>
|
||||
<string name="fail_to_share">Oyun paylaşılamıyor</string>
|
||||
<string name="version_s">%1$s - %2$s</string>
|
||||
<string name="version_s">Versiyon %1$s</string>
|
||||
<string name="sound_effects">Ses Efektleri</string>
|
||||
<string name="quit">Çık</string>
|
||||
<string name="are_you_sure">Emin misiniz?</string>
|
||||
|
|
|
@ -1,5 +1,12 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<style name="AppTheme" parent="Theme.AppCompat.DayNight">
|
||||
<item name="colorPrimary">@color/primary</item>
|
||||
<item name="colorPrimaryDark">@color/primary_dark</item>
|
||||
<item name="colorAccent">@color/accent</item>
|
||||
<item name="android:windowTranslucentNavigation">true</item>
|
||||
</style>
|
||||
|
||||
<style name="AppTheme.NoActionBar" parent="Theme.AppCompat.DayNight">
|
||||
<item name="windowActionBar">false</item>
|
||||
<item name="windowNoTitle">true</item>
|
||||
|
|
93
common/src/main/res/values-vi/strings.xml
Normal file
93
common/src/main/res/values-vi/strings.xml
Normal file
|
@ -0,0 +1,93 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources xmlns:tools="http://schemas.android.com/tools" tools:locale="vi">
|
||||
<string name="app_name">Dò mìn</string>
|
||||
<string name="app_description">Bạn phải mở tất cả các ô trên một bãi mìn mà không làm nổ cục mìn nào.</string>
|
||||
<string name="remaining_mines">Số mìn còn lại</string>
|
||||
<string name="install">Cài đặt</string>
|
||||
<string name="minefield">Độ khó</string>
|
||||
<string name="standard">Tiêu chuẩn</string>
|
||||
<string name="beginner">Dễ</string>
|
||||
<string name="intermediate">Trung bình</string>
|
||||
<string name="expert">Khó</string>
|
||||
<string name="open_menu">Mở menu</string>
|
||||
<string name="close_menu">Đóng menu</string>
|
||||
<string name="settings">Cài đặt</string>
|
||||
<string name="animations">Hiệu ứng động</string>
|
||||
<string name="vibration">Phản hồi rung</string>
|
||||
<string name="about">Giới thiệu</string>
|
||||
<string name="no_network">Không có kết nối mạng.</string>
|
||||
<string name="events">Thống kê</string>
|
||||
<string name="start_over">Trò chơi mới</string>
|
||||
<string name="retry_sure">Nếu chơi trò chơi mới,\ntrò chơi đang chơi dở sẽ bị mất.</string>
|
||||
<string name="cancel">Huỷ</string>
|
||||
<string name="resume">Tiếp tục</string>
|
||||
<string name="show_licenses">Hiển thị giấy phép</string>
|
||||
<string name="source_code">Mã nguồn</string>
|
||||
<string name="translation">Dịch thuật</string>
|
||||
<string name="licenses">Giấy phép</string>
|
||||
<string name="google_play_games">Google Play Trò chơi</string>
|
||||
<string name="leaderboards">Bảng xếp hạng</string>
|
||||
<string name="connect">Kết nối</string>
|
||||
<string name="connecting">Đang kết nối…</string>
|
||||
<string name="disconnect">Ngừng kết nối</string>
|
||||
<string name="disconnected">Đã ngắt kết nối</string>
|
||||
<string name="new_game">Trò chơi mới</string>
|
||||
<string name="share">Chia sẻ</string>
|
||||
<string name="share_menu">Chia sẻ…</string>
|
||||
<string name="new_game_request">Bạn có chắc muốn bắt đầu trò chơi mới?</string>
|
||||
<string name="yes">Có</string>
|
||||
<string name="general">Tổng quan</string>
|
||||
<string name="all_mines_disabled">Đã phá hết mìn.</string>
|
||||
<string name="mines_remaining">%d mìn</string>
|
||||
<string name="game_time">Thời gian chơi</string>
|
||||
<string name="covered_field">Số ô đã mở</string>
|
||||
<string name="mine">Mìn</string>
|
||||
<string name="exploded_mine">Mìn đã nổ</string>
|
||||
<string name="game_started">Trò chơi bắt đầu</string>
|
||||
<string name="you_exploded_a_mine">Bạn làm nổ mìn rồi!</string>
|
||||
<string name="flag_placed">Đã cắm cờ!</string>
|
||||
<string name="flag_removed">Đã tháo cờ hiệu!</string>
|
||||
<string name="used_software_text">Trò chơi này sử dụng các phần mềm bên thứ ba sau:</string>
|
||||
<string name="translators_text">Trò chơi này đã được dịch bởi những người này:</string>
|
||||
<string name="sign_in_failed">Không đăng nhập được. Hãy kiểm tra lại kết nối mạng và thử lại.</string>
|
||||
<string name="unknown_error">Lỗi không xác định.</string>
|
||||
<string name="retry">Thử lại</string>
|
||||
<string name="empty">Trống</string>
|
||||
<string name="quit_confirm">Trò chơi bạn đang chơi sẽ bị mất.\nNhưng bạn có thể cài đặt trò chơi trước khi thoát.</string>
|
||||
<string name="you_won">Thắng rồi!</string>
|
||||
<string name="you_lost">Thua rồi!</string>
|
||||
<string name="game_over_desc_0">Nhấn giữ ô vuông để cắm cờ.</string>
|
||||
<string name="game_over_desc_1">Chúc bạn may mắn lần sau.</string>
|
||||
<string name="game_over_desc_2">Bạn dò được %1$d/%2$d mìn trong vòng %3$d giây.</string>
|
||||
<string name="game_over_desc_3">Suýt chút nữa là thắng rồi!</string>
|
||||
<string name="game_over_desc_4">Bạn giải xong trò chơi trong vòng %1$d giây.</string>
|
||||
<string name="share_body_text">Tôi đã dò được %1$d/%2$d mìn trong vòng %3$d giây.</string>
|
||||
<string name="share_body_text_generic">Tôi đang chơi %1$s</string>
|
||||
<string name="fail_to_share">Không chia sẻ được trò chơi</string>
|
||||
<string name="version_s">Phiên bản %1$s</string>
|
||||
<string name="sound_effects">Hiệu ứng âm thanh</string>
|
||||
<string name="quit">Thoát</string>
|
||||
<string name="are_you_sure">Bạn chắc chứ?</string>
|
||||
<string name="custom">Tuỳ chỉnh</string>
|
||||
<string name="start">Bắt đầu</string>
|
||||
<string name="width">Chiều rộng</string>
|
||||
<string name="height">Chiều cao</string>
|
||||
<string name="mines">Mìn</string>
|
||||
<string name="auto_flag">Trợ lí trò chơi</string>
|
||||
<string name="desc_convered_area">Ô đã mở</string>
|
||||
<string name="desc_marked_area">Ô đã đánh dấu</string>
|
||||
<string name="desc_question_area">Ô còn nghi ngờ</string>
|
||||
<string name="desc_wrongly_marked_area">Ô đánh dấu sai</string>
|
||||
<string name="settings_general">Tổng quan</string>
|
||||
<string name="settings_vibration_desc">Rung khi mìn nổ hoặc cắm/dỡ cờ</string>
|
||||
<string name="settings_sound_desc">Phát âm thanh nổ mìn</string>
|
||||
<string name="settings_auto_flag_desc">Tự cắm cờ vào những chỗ chắc chắn có mìn</string>
|
||||
<string name="settings_accessibility">Trợ năng</string>
|
||||
<string name="settings_large_areas">Vùng chạm lớn</string>
|
||||
<string name="settings_large_areas_desc">Tăng kích cỡ các vùng chạm</string>
|
||||
<string name="rating">Phản hồi</string>
|
||||
<string name="rating_menu">Phản hồi ❤</string>
|
||||
<string name="rating_message">Nếu bạn thích trò chơi này, hãy gửi phản hồi cho chúng tôi. Nhận xét của bạn sẽ giúp chúng tôi rất nhiều.</string>
|
||||
<string name="rating_button">Có ❤️️️</string>
|
||||
<string name="rating_button_no">Không</string>
|
||||
</resources>
|
|
@ -23,6 +23,7 @@
|
|||
<string name="resume">恢复</string>
|
||||
<string name="show_licenses">显示许可证</string>
|
||||
<string name="source_code">源代码</string>
|
||||
<string name="translation">翻译</string>
|
||||
<string name="licenses">许可证</string>
|
||||
<string name="google_play_games">Google Play 游戏</string>
|
||||
<string name="leaderboards">排行榜</string>
|
||||
|
@ -47,6 +48,7 @@
|
|||
<string name="flag_placed">标记已放置!</string>
|
||||
<string name="flag_removed">标记已移除!</string>
|
||||
<string name="used_software_text">该游戏使用以下第三方软件:</string>
|
||||
<string name="translators_text">这场游戏被以下人员翻译:</string>
|
||||
<string name="sign_in_failed">登录失败。请检查你的网络连接,然后重试。</string>
|
||||
<string name="unknown_error">未知错误。</string>
|
||||
<string name="retry">重试</string>
|
||||
|
@ -62,7 +64,7 @@
|
|||
<string name="share_body_text">我在 %1$d秒内完成了%2$d / %3$d。</string>
|
||||
<string name="share_body_text_generic">我正在播放 %1$s</string>
|
||||
<string name="fail_to_share">分享游戏失败</string>
|
||||
<string name="version_s">%1$s - %2$s</string>
|
||||
<string name="version_s">版本%1$s</string>
|
||||
<string name="sound_effects">声音特效</string>
|
||||
<string name="quit">退出</string>
|
||||
<string name="are_you_sure">确定吗?</string>
|
||||
|
|
|
@ -3,8 +3,8 @@
|
|||
<color name="black">#000000</color>
|
||||
<color name="white">#FFFFFF</color>
|
||||
|
||||
<color name="primary">#212121</color>
|
||||
<color name="primary_dark">#212121</color>
|
||||
<color name="primary">#FFFFFF</color>
|
||||
<color name="primary_dark">#9E9E9E</color>
|
||||
|
||||
<color name="mines_around_1">#527F8D</color>
|
||||
<color name="mines_around_2">#2B8D43</color>
|
||||
|
@ -22,7 +22,6 @@
|
|||
<color name="text_color">#212121</color>
|
||||
<color name="highlight">#212121</color>
|
||||
|
||||
<color name="stroke_cover">#000</color>
|
||||
<color name="view_cover">#424242</color>
|
||||
<color name="view_clean">#d5d2cc</color>
|
||||
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources xmlns:tools="http://schemas.android.com/tools" tools:locale="en">
|
||||
<string name="app_name">Anti-Mine</string>
|
||||
<string name="app_description">You have to clear a rectangular board containing hidden mines without detonating any of them.</string>
|
||||
<string name="app_name">Antimine</string>
|
||||
<string name="app_description">You have to clear a rectangular board containing hidden \"mines\" without detonating any of them.</string>
|
||||
<string name="remaining_mines">Remaining mines</string>
|
||||
<string name="install">Install</string>
|
||||
<string name="minefield">Difficulty</string>
|
||||
|
@ -23,6 +23,7 @@
|
|||
<string name="resume">Resume</string>
|
||||
<string name="show_licenses">Show Licenses</string>
|
||||
<string name="source_code">Source Code</string>
|
||||
<string name="translation">Translation</string>
|
||||
<string name="licenses">Licenses</string>
|
||||
<string name="google_play_games">Google Play Games</string>
|
||||
<string name="leaderboards">Leaderboards</string>
|
||||
|
@ -47,6 +48,7 @@
|
|||
<string name="flag_placed">Flag placed!</string>
|
||||
<string name="flag_removed">Flag removed!</string>
|
||||
<string name="used_software_text">This game uses the following third parties software:</string>
|
||||
<string name="translators_text">This game was translated by the following people:</string>
|
||||
<string name="sign_in_failed">Failed to sign in. Please check your network connection and try again.</string>
|
||||
<string name="unknown_error">Unknown error.</string>
|
||||
<string name="retry">Retry</string>
|
||||
|
@ -62,23 +64,20 @@
|
|||
<string name="share_body_text">I did %1$d/%2$d in %3$d seconds.</string>
|
||||
<string name="share_body_text_generic">I\'m playing %1$s</string>
|
||||
<string name="fail_to_share">Failed to share game</string>
|
||||
<string name="version_s">%1$s - %2$s</string>
|
||||
<string name="version_s">Version %1$s</string>
|
||||
<string name="sound_effects">Sound Effects</string>
|
||||
<string name="quit">Quit</string>
|
||||
<string name="are_you_sure">Are you sure?</string>
|
||||
|
||||
<string name="custom">Custom</string>
|
||||
<string name="start">Start</string>
|
||||
<string name="width">Width</string>
|
||||
<string name="height">Height</string>
|
||||
<string name="mines">Mines</string>
|
||||
<string name="auto_flag">Game Assistant</string>
|
||||
|
||||
<string name="desc_convered_area">Covered area</string>
|
||||
<string name="desc_marked_area">Marked area</string>
|
||||
<string name="desc_question_area">Doubtful area</string>
|
||||
<string name="desc_wrongly_marked_area">Wrongly marked area</string>
|
||||
|
||||
<string name="settings_general">General</string>
|
||||
<string name="settings_vibration_desc">Vibrates on explosion or flag toggle</string>
|
||||
<string name="settings_sound_desc">Makes a sound of explosion</string>
|
||||
|
@ -86,7 +85,6 @@
|
|||
<string name="settings_accessibility">Accessibility</string>
|
||||
<string name="settings_large_areas">Use Large Areas</string>
|
||||
<string name="settings_large_areas_desc">Increases the touch area</string>
|
||||
|
||||
<string name="rating">Feedback</string>
|
||||
<string name="rating_menu">Feedback ❤</string>
|
||||
<string name="rating_message">If you like this game, please give us a feedback. It will help us a lot.</string>
|
||||
|
|
|
@ -14,7 +14,7 @@
|
|||
<item name="colorAccent">@color/accent</item>
|
||||
</style>
|
||||
|
||||
<style name="AppTheme.NoActionBar" parent="Theme.AppCompat.Light.DarkActionBar">
|
||||
<style name="AppTheme.NoActionBar" parent="Theme.AppCompat.DayNight">
|
||||
<item name="windowActionBar">false</item>
|
||||
<item name="windowNoTitle">true</item>
|
||||
</style>
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
ext.buildVersion = [
|
||||
versionCode : 61,
|
||||
versionName : '6.1.5',
|
||||
versionCode : 62,
|
||||
versionName : '6.2.0',
|
||||
targetSdk : 29,
|
||||
minAppSdk : 16,
|
||||
wearMinAppSdk: 23,
|
||||
|
|
6
wear/src/main/res/values-de/strings.xml
Normal file
6
wear/src/main/res/values-de/strings.xml
Normal file
|
@ -0,0 +1,6 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="new_game">Neues Spiel</string>
|
||||
<string name="victory">Du hast gewonnen! 😎</string>
|
||||
<string name="game_over">Explosion! 😢</string>
|
||||
</resources>
|
6
wear/src/main/res/values-vi/strings.xml
Normal file
6
wear/src/main/res/values-vi/strings.xml
Normal file
|
@ -0,0 +1,6 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<resources>
|
||||
<string name="new_game">Trò chơi mới</string>
|
||||
<string name="victory">Thắng rồi! 😎</string>
|
||||
<string name="game_over">Nổ rồi! 😢</string>
|
||||
</resources>
|
Loading…
Reference in a new issue