Commit 7ba55d3a authored by sheteng's avatar sheteng

资讯

parent 09b15c01
...@@ -118,4 +118,6 @@ dependencies { ...@@ -118,4 +118,6 @@ dependencies {
implementation("com.github.bumptech.glide:glide:4.11.0") implementation("com.github.bumptech.glide:glide:4.11.0")
annotationProcessor("com.github.bumptech.glide:compiler:4.11.0") annotationProcessor("com.github.bumptech.glide:compiler:4.11.0")
implementation("com.github.open-android:JieCaoVideoPlayer:0.1.0")
} }
\ No newline at end of file
...@@ -24,6 +24,7 @@ ...@@ -24,6 +24,7 @@
<package android:name="com.tencent.mm" /> <package android:name="com.tencent.mm" />
<package android:name="com.tencent.mobileqq" /> <package android:name="com.tencent.mobileqq" />
<package android:name="com.baidu.browser.apps" /> <package android:name="com.baidu.browser.apps" />
<package android:name="com.ldsanguo.shark" />
</queries> </queries>
<application <application
......
...@@ -2,6 +2,7 @@ package com.ccwangluo.accelerator.ui ...@@ -2,6 +2,7 @@ package com.ccwangluo.accelerator.ui
import android.Manifest import android.Manifest
import android.content.Intent import android.content.Intent
import android.hardware.Sensor
import android.os.Bundle import android.os.Bundle
import android.os.Looper import android.os.Looper
import android.view.KeyEvent import android.view.KeyEvent
...@@ -29,6 +30,9 @@ import com.tencent.tauth.Tencent ...@@ -29,6 +30,9 @@ import com.tencent.tauth.Tencent
import com.umeng.socialize.UMShareAPI import com.umeng.socialize.UMShareAPI
import com.xuexiang.xpage.base.XPageActivity import com.xuexiang.xpage.base.XPageActivity
import com.xuexiang.xpage.core.PageOption import com.xuexiang.xpage.core.PageOption
import android.hardware.SensorManager
import android.hardware.SensorEventListener
import fm.jiecao.jcvideoplayer_lib.JCVideoPlayer
class MainActivity() : XPageActivity(), TencentLocationListener { class MainActivity() : XPageActivity(), TencentLocationListener {
...@@ -41,6 +45,8 @@ class MainActivity() : XPageActivity(), TencentLocationListener { ...@@ -41,6 +45,8 @@ class MainActivity() : XPageActivity(), TencentLocationListener {
private lateinit var accelertorViewModel: AccelertorViewModel private lateinit var accelertorViewModel: AccelertorViewModel
private var mSensorEventListener: SensorEventListener? = null
private var mSensorManager: SensorManager? = null
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState) super.onCreate(savedInstanceState)
accelertorViewModel = accelertorViewModel =
...@@ -95,12 +101,37 @@ class MainActivity() : XPageActivity(), TencentLocationListener { ...@@ -95,12 +101,37 @@ class MainActivity() : XPageActivity(), TencentLocationListener {
} }
AcceleratorUtils.initConnect(this, connect) AcceleratorUtils.initConnect(this, connect)
mSensorManager = getSystemService(SENSOR_SERVICE) as SensorManager
mSensorEventListener = JCVideoPlayer.JCAutoFullscreenListener()
} }
private fun initPhoneUtils() { private fun initPhoneUtils() {
PhoneUtils.getPhoneInfo() PhoneUtils.getPhoneInfo()
} }
override fun onBackPressed() {
if (JCVideoPlayer.backPress()) {
return
}
super.onBackPressed()
}
override fun onResume() {
super.onResume()
val mSensor = mSensorManager?.getDefaultSensor(Sensor.TYPE_ACCELEROMETER);
mSensorManager?.registerListener(
mSensorEventListener,
mSensor,
SensorManager.SENSOR_DELAY_NORMAL
);
}
override fun onPause() {
super.onPause()
mSensorManager?.unregisterListener(mSensorEventListener);
JCVideoPlayer.releaseAllVideos();
}
override fun onStart() { override fun onStart() {
super.onStart() super.onStart()
AcceleratorUtils.onStart() AcceleratorUtils.onStart()
...@@ -135,10 +166,10 @@ class MainActivity() : XPageActivity(), TencentLocationListener { ...@@ -135,10 +166,10 @@ class MainActivity() : XPageActivity(), TencentLocationListener {
} }
override fun onLocationChanged(p0: TencentLocation?, p1: Int, p2: String?) { override fun onLocationChanged(p0: TencentLocation?, p1: Int, p2: String?) {
if (p1 == 0){ if (p1 == 0) {
p0?.province?.let { p0?.province?.let {
AuthManager.area = it AuthManager.area = it
} }
} }
} }
......
...@@ -178,11 +178,11 @@ class AccelertorFragment : XPageFragment() { ...@@ -178,11 +178,11 @@ class AccelertorFragment : XPageFragment() {
if (binding.expandableLayout1.isExpanded) { if (binding.expandableLayout1.isExpanded) {
binding.expandableLayout1.toggle() binding.expandableLayout1.toggle()
binding.expandableLayout2.expand() binding.expandableLayout2.expand()
binding.btnExpendBg.setBackgroundResource(com.ccwangluo.accelerator.R.mipmap.quick_arrow_up) binding.btnExpendBg.setBackgroundResource(R.mipmap.quick_arrow_up)
} else { } else {
binding.expandableLayout1.expand() binding.expandableLayout1.expand()
binding.expandableLayout2.toggle() binding.expandableLayout2.toggle()
binding.btnExpendBg.setBackgroundResource(com.ccwangluo.accelerator.R.mipmap.quick_arrow_down) binding.btnExpendBg.setBackgroundResource(R.mipmap.quick_arrow_down)
} }
} }
binding.btnQuick.setOnClickListener { binding.btnQuick.setOnClickListener {
...@@ -240,6 +240,12 @@ class AccelertorFragment : XPageFragment() { ...@@ -240,6 +240,12 @@ class AccelertorFragment : XPageFragment() {
} }
binding.gameStart.setOnClickListener {
AcceleratorUtils.game?.let {
AppUtils.launchApp(it.packageName)
}
}
} }
fun openToWebview(url: String) { fun openToWebview(url: String) {
...@@ -283,6 +289,7 @@ class AccelertorFragment : XPageFragment() { ...@@ -283,6 +289,7 @@ class AccelertorFragment : XPageFragment() {
}).show<CommonDialog>() }).show<CommonDialog>()
SettingSPUtils.isFirstAccSuccess = false SettingSPUtils.isFirstAccSuccess = false
} }
binding.gameStart.visibility = View.VISIBLE
} else { } else {
binding.gamePicIn1.clearAnimation() binding.gamePicIn1.clearAnimation()
if (binding.gamePicOut.background is AnimationDrawable) { if (binding.gamePicOut.background is AnimationDrawable) {
...@@ -290,6 +297,7 @@ class AccelertorFragment : XPageFragment() { ...@@ -290,6 +297,7 @@ class AccelertorFragment : XPageFragment() {
} }
binding.accStateTx.visibility = View.GONE binding.accStateTx.visibility = View.GONE
binding.btnQuick.setBackgroundResource(R.mipmap.quick_start) binding.btnQuick.setBackgroundResource(R.mipmap.quick_start)
binding.gameStart.visibility = View.GONE
} }
} }
......
...@@ -5,7 +5,10 @@ import android.view.View ...@@ -5,7 +5,10 @@ import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.ViewModelProvider
import com.ccwangluo.accelerator.R import com.ccwangluo.accelerator.R
import com.ccwangluo.accelerator.adapter.KotlinDataAdapter
import com.ccwangluo.accelerator.databinding.FragmentNewsBinding import com.ccwangluo.accelerator.databinding.FragmentNewsBinding
import com.ccwangluo.accelerator.model.News
import com.ccwangluo.accelerator.ui.news.NewsCollectionAdapter import com.ccwangluo.accelerator.ui.news.NewsCollectionAdapter
import com.google.android.material.tabs.TabLayoutMediator import com.google.android.material.tabs.TabLayoutMediator
import com.xuexiang.xpage.base.XPageFragment import com.xuexiang.xpage.base.XPageFragment
...@@ -20,6 +23,8 @@ class NewsFragment : XPageFragment() { ...@@ -20,6 +23,8 @@ class NewsFragment : XPageFragment() {
return null return null
} }
var dataList = arrayListOf<String>()
override fun inflateView(inflater: LayoutInflater?, container: ViewGroup?): View { override fun inflateView(inflater: LayoutInflater?, container: ViewGroup?): View {
_binding = FragmentNewsBinding.inflate(inflater!!, container, false) _binding = FragmentNewsBinding.inflate(inflater!!, container, false)
newsViewModel = ViewModelProvider(requireActivity()).get(NewsViewModel::class.java) newsViewModel = ViewModelProvider(requireActivity()).get(NewsViewModel::class.java)
...@@ -31,13 +36,20 @@ class NewsFragment : XPageFragment() { ...@@ -31,13 +36,20 @@ class NewsFragment : XPageFragment() {
override fun initViews() { override fun initViews() {
newsViewModel.refreshState.observe(this, { newsViewModel.refreshState.observe(this, {
if (!it) { if (!it) {
binding.refreshLayout.isRefreshing = false
} }
}) })
binding.tvMarquee.addDisplayString("【公告】韩服 DNF已经开启预约啦,小伙伴…") binding.tvMarquee.addDisplayString("【公告】韩服 DNF已经开启预约啦,小伙伴…")
binding.tvMarquee.startRoll() binding.tvMarquee.startRoll()
binding.gameNewsList.adapter = KotlinDataAdapter.Builder<String>()
.setData(dataList)
.setLayoutId(R.layout.item_news_game)
.addBindView{itemView, itemData ->
}.create()
adapter = NewsCollectionAdapter(this, titles) adapter = NewsCollectionAdapter(this, titles)
binding.viewPager.adapter = adapter binding.viewPager.adapter = adapter
TabLayoutMediator(binding.tabLayout, binding.viewPager) { tab, position -> TabLayoutMediator(binding.tabLayout, binding.viewPager) { tab, position ->
...@@ -48,12 +60,12 @@ class NewsFragment : XPageFragment() { ...@@ -48,12 +60,12 @@ class NewsFragment : XPageFragment() {
} }
override fun initListeners() { override fun initListeners() {
binding.refreshLayout.setOnRefreshListener { // binding.refreshLayout.setOnRefreshListener {
adapter?.refresh(binding.viewPager.currentItem) // adapter?.refresh(binding.viewPager.currentItem)
binding.refreshLayout.postDelayed({ // binding.refreshLayout.postDelayed({
binding.refreshLayout.isRefreshing = false // binding.refreshLayout.isRefreshing = false
}, 2000) // }, 2000)
} // }
} }
companion object { companion object {
......
...@@ -19,9 +19,9 @@ class NewsViewModel : ViewModel() { ...@@ -19,9 +19,9 @@ class NewsViewModel : ViewModel() {
fun freshData(position: String, gameId: Int, page: Int) { fun freshData(position: String, gameId: Int, page: Int) {
val type = when (position) { val type = when (position) {
"0" -> "" "0" -> ""
"1" -> "0" "1" -> 1
"2" -> "1" "2" -> 2
else -> 3 else -> position
} }
viewModelScope.launch(Dispatchers.IO) { viewModelScope.launch(Dispatchers.IO) {
val res = val res =
...@@ -37,4 +37,6 @@ class NewsViewModel : ViewModel() { ...@@ -37,4 +37,6 @@ class NewsViewModel : ViewModel() {
} }
} }
\ No newline at end of file
package com.ccwangluo.accelerator.ui.news package com.ccwangluo.accelerator.ui.news
import android.net.Uri
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import android.widget.ImageView import android.widget.ImageView
import android.widget.TextView import android.widget.TextView
import android.widget.VideoView
import androidx.lifecycle.ViewModelProvider import androidx.lifecycle.ViewModelProvider
import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView import androidx.recyclerview.widget.RecyclerView
...@@ -19,7 +17,15 @@ import com.ccwangluo.accelerator.ui.news.NewsCollectionAdapter.Companion.ARG_OBJ ...@@ -19,7 +17,15 @@ import com.ccwangluo.accelerator.ui.news.NewsCollectionAdapter.Companion.ARG_OBJ
import com.ccwangluo.accelerator.utils.AcceleratorUtils import com.ccwangluo.accelerator.utils.AcceleratorUtils
import com.xuexiang.xpage.base.XPageFragment import com.xuexiang.xpage.base.XPageFragment
import com.xuexiang.xpage.utils.TitleBar import com.xuexiang.xpage.utils.TitleBar
import com.xuexiang.xutil.app.AppUtils import fm.jiecao.jcvideoplayer_lib.JCVideoPlayer
import android.graphics.Bitmap
import fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard
import android.media.MediaMetadataRetriever
import com.ccwangluo.accelerator.model.NewsModel
import java.lang.IllegalArgumentException
class NewsObjectFragment : XPageFragment() { class NewsObjectFragment : XPageFragment() {
var recycle_view: RecyclerView? = null var recycle_view: RecyclerView? = null
...@@ -30,15 +36,17 @@ class NewsObjectFragment : XPageFragment() { ...@@ -30,15 +36,17 @@ class NewsObjectFragment : XPageFragment() {
private lateinit var newsViewModel: NewsViewModel private lateinit var newsViewModel: NewsViewModel
private val deviceList = arrayListOf<News>() private val dataList = arrayListOf<News>()
private val page = 1 private var page = 1
private lateinit var position: String private lateinit var position: String
private var newsModel: NewsModel? = null
override fun inflateView(inflater: LayoutInflater?, container: ViewGroup?): View { override fun inflateView(inflater: LayoutInflater?, container: ViewGroup?): View {
newsViewModel = ViewModelProvider(this).get(NewsViewModel::class.java) newsViewModel = ViewModelProvider(this).get(NewsViewModel::class.java)
return inflater!!.inflate(R.layout.fragment_collection_object, container, false) return inflater!!.inflate(R.layout.fragment_collection_object, container, false)
} }
private var gameId = 0
override fun initViews() { override fun initViews() {
arguments?.takeIf { it.containsKey(ARG_OBJECT) }?.apply { arguments?.takeIf { it.containsKey(ARG_OBJECT) }?.apply {
position = getInt(ARG_OBJECT).toString() position = getInt(ARG_OBJECT).toString()
...@@ -46,13 +54,14 @@ class NewsObjectFragment : XPageFragment() { ...@@ -46,13 +54,14 @@ class NewsObjectFragment : XPageFragment() {
val layoutManager = LinearLayoutManager(context) val layoutManager = LinearLayoutManager(context)
recycle_view?.setLayoutManager(layoutManager) recycle_view?.setLayoutManager(layoutManager)
val adapter = KotlinDataAdapter.Builder<News>() val adapter = KotlinDataAdapter.Builder<News>()
.setData(deviceList) .setData(dataList)
.setLayoutId(R.layout.item_dynamic) .setLayoutId(R.layout.item_dynamic)
.addBindView { itemView, itemData -> .addBindView { itemView, itemData ->
val avatar = itemView.findViewById<ImageView>(R.id.avatar) val avatar = itemView.findViewById<ImageView>(R.id.avatar)
Glide.with(this@NewsObjectFragment).load(itemData.avatar).into(avatar) Glide.with(this@NewsObjectFragment).load(itemData.avatar).into(avatar)
itemView.findViewById<TextView>(R.id.nickname).setText(itemData.nickname) itemView.findViewById<TextView>(R.id.nickname).setText(itemData.nickname)
itemView.findViewById<TextView>(R.id.createdDate).setText(itemData.createdDate) itemView.findViewById<TextView>(R.id.createdDate)
.setText(itemData.createdDate?.substring(0, 10))
itemData.title?.let { itemData.title?.let {
itemView.findViewById<TextView>(R.id.title).visibility = View.VISIBLE itemView.findViewById<TextView>(R.id.title).visibility = View.VISIBLE
itemView.findViewById<TextView>(R.id.title).setText(it) itemView.findViewById<TextView>(R.id.title).setText(it)
...@@ -64,21 +73,32 @@ class NewsObjectFragment : XPageFragment() { ...@@ -64,21 +73,32 @@ class NewsObjectFragment : XPageFragment() {
} ?: let { } ?: let {
itemView.findViewById<TextView>(R.id.abbrContent).visibility = View.GONE itemView.findViewById<TextView>(R.id.abbrContent).visibility = View.GONE
} }
// 资讯类型:0攻略 1视频 // 资讯类型:0攻略 1视频
val imgs = itemView.findViewById<ImageView>(R.id.imgs) val imgs = itemView.findViewById<ImageView>(R.id.imgs)
val vedio = itemView.findViewById<VideoView>(R.id.video_view) val vedio = itemView.findViewById<JCVideoPlayerStandard>(R.id.video_view)
if (itemData.type == 0) { vedio.backButton.visibility = View.GONE
itemData.imgs?.let { vedio.tinyBackImageView.visibility = View.GONE
imgs.visibility = View.VISIBLE itemData.imgs?.let {
vedio.visibility = View.GONE imgs.visibility = View.VISIBLE
Glide.with(this@NewsObjectFragment).load(itemData.imgs).into(imgs) vedio.visibility = View.GONE
} Glide.with(this@NewsObjectFragment).load(itemData.imgs).into(imgs)
} else if (itemData.type == 1) { }
itemData.videoUrl?.let { itemData.videoUrl?.let {
imgs.visibility = View.GONE imgs.visibility = View.GONE
vedio.visibility = View.VISIBLE vedio.visibility = View.VISIBLE
vedio.setVideoURI(Uri.parse(it)) vedio.setUp(
} it, JCVideoPlayer.SCREEN_LAYOUT_LIST
)
Glide.with(this@NewsObjectFragment).load(getNetVideoBitmap(it))
.into(vedio.thumbImageView)
}
itemData.pageViews?.let {
itemView.findViewById<TextView>(R.id.pageViews).setText("${it}浏览")
}
itemData.greatNum?.let {
itemView.findViewById<TextView>(R.id.great_num).setText("${it}")
} }
} }
.create() .create()
...@@ -86,27 +106,68 @@ class NewsObjectFragment : XPageFragment() { ...@@ -86,27 +106,68 @@ class NewsObjectFragment : XPageFragment() {
AcceleratorUtils.getGameList(this@NewsObjectFragment) { AcceleratorUtils.getGameList(this@NewsObjectFragment) {
if (it) { if (it) {
AcceleratorUtils.game?.let { AcceleratorUtils.game?.let {
gameId = it.id
newsViewModel.freshData(position, it.id, page) newsViewModel.freshData(position, it.id, page)
} }
} }
} }
recycle_view?.addOnScrollListener(object : RecyclerView.OnScrollListener() {
override fun onScrollStateChanged(recyclerView: RecyclerView, newState: Int) {
super.onScrollStateChanged(recyclerView, newState)
}
override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) {
super.onScrolled(recyclerView, dx, dy)
if (isSlideToBottom(recyclerView)) {
newsModel?.let {
if (dataList.size < it.total) {
page++
newsViewModel.freshData(position, gameId, page)
}
}
}
}
})
} }
newsViewModel.newsModel.observe(this, { newsViewModel.newsModel.observe(this, {
deviceList.addAll(it.list) newsModel = it
dataList.addAll(it.list)
recycle_view?.adapter?.notifyDataSetChanged() recycle_view?.adapter?.notifyDataSetChanged()
}) })
} }
protected fun isSlideToBottom(recyclerView: RecyclerView?): Boolean {
if (recyclerView == null) return false
return if (recyclerView.computeVerticalScrollExtent() + recyclerView.computeVerticalScrollOffset() >= recyclerView.computeVerticalScrollRange()) true else false
}
fun getNetVideoBitmap(videoUrl: String?): Bitmap? {
var bitmap: Bitmap? = null
val retriever = MediaMetadataRetriever()
try {
//根据url获取缩略图
retriever.setDataSource(videoUrl, HashMap())
//获得第一帧图片
bitmap = retriever.frameAtTime
} catch (e: IllegalArgumentException) {
e.printStackTrace()
} finally {
retriever.release()
}
return bitmap
}
override fun initListeners() { override fun initListeners() {
} }
fun refresh() { fun refresh() {
recycle_view?.postDelayed({ AcceleratorUtils.game?.let {
AcceleratorUtils.game?.let { gameId = it.id
newsViewModel.freshData(position, it.id, page) page = 1
} newsViewModel.freshData(position, it.id, page)
}, 1000) }
} }
} }
\ No newline at end of file
...@@ -15,6 +15,10 @@ import com.karumi.dexter.listener.multi.MultiplePermissionsListener ...@@ -15,6 +15,10 @@ import com.karumi.dexter.listener.multi.MultiplePermissionsListener
import com.xuexiang.xpage.base.XPageFragment import com.xuexiang.xpage.base.XPageFragment
import com.xuexiang.xutil.app.AppUtils import com.xuexiang.xutil.app.AppUtils
import com.xuexiang.xutil.system.PermissionUtils import com.xuexiang.xutil.system.PermissionUtils
import android.content.Intent
import android.net.Uri
import com.hjq.toast.ToastUtils
import java.lang.Exception
/** /**
...@@ -186,4 +190,26 @@ class AndroidInterface(val xPageFragment: XPageFragment, val agentWeb: AgentWeb) ...@@ -186,4 +190,26 @@ class AndroidInterface(val xPageFragment: XPageFragment, val agentWeb: AgentWeb)
.quickCallJs(callback, AppUtils.getAppVersionName(), AppUtils.getAppVersionCode().toString()) .quickCallJs(callback, AppUtils.getAppVersionName(), AppUtils.getAppVersionCode().toString())
} }
/****************
*
* 发起添加群流程。
* 调用 joinQQGroup(09Gg-vMtnaIfgr-slk1pOkjVIFmjI79U)
*/
@JavascriptInterface
fun joinQQGroup(url: String) {
val intent = Intent()
intent.data =
Uri.parse(url)
// 此Flag可根据具体产品需要自定义,如设置,则在加群界面按返回,返回手Q主界面,不设置,按返回会返回到呼起产品界面 //
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
try {
xPageFragment.startActivity(intent)
} catch (e: Exception) {
// 未安装手Q或安装的版本不支持
ToastUtils.show("未安装手Q或安装的版本不支持")
}
}
} }
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" <LinearLayout 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_width="match_parent"
android:layout_height="match_parent"> android:layout_height="match_parent">
<androidx.recyclerview.widget.RecyclerView <androidx.recyclerview.widget.RecyclerView
app:layout_behavior="@string/appbar_scrolling_view_behavior"
android:id="@+id/recycle_view" android:id="@+id/recycle_view"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent"/> android:layout_height="match_parent"/>
......
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<LinearLayout <LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android" 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_width="match_parent"
android:layout_height="match_parent"> android:layout_height="match_parent">
......
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<androidx.swiperefreshlayout.widget.SwipeRefreshLayout xmlns:android="http://schemas.android.com/apk/res/android" <androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/refresh_layout"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:background="@color/black" android:background="@color/white">
android:orientation="vertical">
<LinearLayout <com.google.android.material.appbar.AppBarLayout
android:id="@+id/appbar"
android:background="@color/white"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="wrap_content"
android:orientation="vertical"> android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
<TextView <TextView
android:layout_width="match_parent" app:layout_scrollFlags="scroll|exitUntilCollapsed"
android:layout_height="wrap_content" android:layout_width="match_parent"
android:layout_marginTop="36dp"
android:gravity="center_horizontal"
android:text="地下城与勇士 韩服"
android:textColor="#FFFFFFFF"
android:textSize="16sp" />
<com.xuexiang.xui.widget.layout.XUILinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_marginTop="16dp"
android:background="@color/white"
android:orientation="vertical"
app:xui_hideRadiusSide="bottom"
app:xui_radius="10dp">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="21dp"
android:orientation="horizontal">
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginLeft="20dp" android:background="@mipmap/new_top"
android:orientation="vertical"> android:gravity="center"
android:paddingTop="36dp"
<ImageView android:paddingBottom="16dp"
android:layout_width="48dp" android:text="地下城与勇士 韩服"
android:layout_height="48dp" android:textColor="#FFFFFFFF"
android:layout_gravity="center_horizontal" android:textSize="16sp"
android:background="@mipmap/game_download" /> app:layout_collapseMode="pin" />
<TextView <androidx.recyclerview.widget.RecyclerView
android:layout_width="70dp" app:layout_scrollFlags="scroll|exitUntilCollapsed"
android:layout_height="20dp" android:id="@+id/game_news_list"
android:layout_marginTop="8dp" android:layout_width="match_parent"
android:gravity="center"
android:text="游戏下载"
android:textColor="#FF3B3B3B"
android:textSize="14sp" />
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginLeft="20dp" android:layout_marginTop="21dp"
android:orientation="vertical"> android:background="@color/white"
android:orientation="horizontal"
app:layout_collapseMode="parallax">
<ImageView
android:layout_width="48dp"
android:layout_height="48dp"
android:layout_gravity="center_horizontal"
android:background="@mipmap/game_group" />
<TextView </androidx.recyclerview.widget.RecyclerView>
android:layout_width="70dp"
android:layout_height="20dp"
android:layout_marginTop="8dp"
android:gravity="center"
android:text="万能宝藏群"
android:textColor="#FF3B3B3B"
android:textSize="14sp" />
</LinearLayout>
<LinearLayout <LinearLayout
android:layout_width="wrap_content" app:layout_scrollFlags="noScroll"
android:layout_height="wrap_content" android:layout_width="match_parent"
android:layout_height="20dp"
android:layout_marginLeft="20dp" android:layout_marginLeft="20dp"
android:orientation="vertical"> android:layout_marginTop="21dp"
android:layout_marginRight="20dp"
app:layout_collapseMode="parallax">
<ImageView <ImageView
android:layout_width="48dp" android:layout_width="17.95dp"
android:layout_height="48dp" android:layout_height="14.6dp"
android:layout_gravity="center_horizontal" android:layout_gravity="center_vertical"
android:background="@mipmap/game_google" /> android:background="@mipmap/icon_notice" />
<TextView <com.xuexiang.xui.widget.textview.MarqueeTextView
android:layout_width="70dp" android:id="@+id/tv_marquee"
android:layout_height="20dp" android:layout_width="299dp"
android:layout_marginTop="8dp" android:layout_height="wrap_content"
android:layout_marginLeft="3dp"
android:gravity="center" android:gravity="center"
android:text="谷歌套件" android:text=""
android:textColor="#FF3B3B3B" android:textColor="#FF1A1A1A"
android:textSize="14sp" /> android:textSize="14sp"
</LinearLayout> app:mtv_isAutoDisplay="true"
</LinearLayout> app:mtv_isAutoFit="true" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="20dp"
android:layout_marginLeft="20dp"
android:layout_marginTop="21dp"
android:layout_marginRight="20dp">
<ImageView </LinearLayout>
android:layout_width="17.95dp"
android:layout_height="14.6dp"
android:layout_gravity="center_vertical"
android:background="@mipmap/icon_notice" />
<com.xuexiang.xui.widget.textview.MarqueeTextView </com.google.android.material.appbar.AppBarLayout>
android:id="@+id/tv_marquee"
android:layout_width="299dp"
android:layout_height="wrap_content"
android:layout_marginLeft="3dp"
android:gravity="center"
android:text=""
android:textColor="#FF1A1A1A"
android:textSize="14sp"
app:mtv_isAutoDisplay="true"
app:mtv_isAutoFit="true" />
</LinearLayout>
<com.google.android.material.tabs.TabLayout <androidx.appcompat.widget.LinearLayoutCompat
android:id="@+id/tab_layout" android:layout_width="match_parent"
style="@style/MyTablayoutstyle" android:layout_height="match_parent"
android:layout_width="match_parent" android:orientation="vertical"
android:layout_height="wrap_content" app:layout_behavior="@string/appbar_scrolling_view_behavior">
android:layout_marginTop="5dp"
app:tabBackground="@null"
app:tabRippleColor="@null"/>
<androidx.viewpager2.widget.ViewPager2 <com.google.android.material.tabs.TabLayout
android:id="@+id/view_pager" android:id="@+id/tab_layout"
android:layout_width="match_parent" style="@style/MyTablayoutstyle"
android:layout_height="match_parent" /> android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="5dp"
app:tabBackground="@null"
app:tabRippleColor="@null" />
</com.xuexiang.xui.widget.layout.XUILinearLayout> <androidx.viewpager2.widget.ViewPager2
</LinearLayout> android:id="@+id/view_pager"
</androidx.swiperefreshlayout.widget.SwipeRefreshLayout> android:layout_width="match_parent"
\ No newline at end of file android:layout_height="match_parent" />
</androidx.appcompat.widget.LinearLayoutCompat>
</androidx.coordinatorlayout.widget.CoordinatorLayout>
\ No newline at end of file
...@@ -70,7 +70,6 @@ ...@@ -70,7 +70,6 @@
android:layout_height="wrap_content"> android:layout_height="wrap_content">
<ImageView <ImageView
android:id="@+id/game_pic_out" android:id="@+id/game_pic_out"
android:layout_width="250dp" android:layout_width="250dp"
...@@ -109,7 +108,7 @@ ...@@ -109,7 +108,7 @@
app:cpv_end_progress="99" app:cpv_end_progress="99"
app:cpv_isFilled="false" app:cpv_isFilled="false"
app:cpv_isTracked="true" app:cpv_isTracked="true"
app:cpv_progress_duration="2000" app:cpv_progress_duration="1500"
app:cpv_progress_textColor="#8BE7FA" app:cpv_progress_textColor="#8BE7FA"
app:cpv_progress_textSize="50sp" app:cpv_progress_textSize="50sp"
app:cpv_progress_textVisibility="false" app:cpv_progress_textVisibility="false"
...@@ -126,35 +125,43 @@ ...@@ -126,35 +125,43 @@
android:layout_centerInParent="true" android:layout_centerInParent="true"
android:background="#77000000" android:background="#77000000"
android:gravity="center" android:gravity="center"
android:visibility="gone"
android:orientation="horizontal" android:orientation="horizontal"
android:visibility="gone"
app:xui_borderColor="@color/transparent" app:xui_borderColor="@color/transparent"
app:xui_outerNormalColor="@color/transparent" app:xui_outerNormalColor="@color/transparent"
app:xui_radius="190dp" app:xui_radius="190dp"
app:xui_showBorderOnlyBeforeL="false"> app:xui_showBorderOnlyBeforeL="false">
<LinearLayout <LinearLayout
android:orientation="horizontal"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content"> android:layout_height="wrap_content"
android:orientation="horizontal">
<TextView <TextView
android:id="@+id/progress" android:id="@+id/progress"
android:text="0"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:text="0"
android:textColor="#8BE7FA" android:textColor="#8BE7FA"
android:textSize="70sp" android:textSize="70sp" />
/>
<TextView <TextView
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:textColor="#8BE7FA"
android:text="%" android:text="%"
android:textSize="25sp" android:textColor="#8BE7FA"
/> android:textSize="25sp" />
</LinearLayout> </LinearLayout>
</com.xuexiang.xui.widget.layout.XUILinearLayout> </com.xuexiang.xui.widget.layout.XUILinearLayout>
<ImageView
android:id="@+id/game_start"
android:visibility="gone"
android:layout_width="190dp"
android:layout_height="190dp"
android:layout_centerInParent="true"
android:background="@mipmap/game_start_btn" />
<com.xuexiang.xui.widget.layout.XUILinearLayout <com.xuexiang.xui.widget.layout.XUILinearLayout
android:id="@+id/quick_top_toast" android:id="@+id/quick_top_toast"
...@@ -163,8 +170,8 @@ ...@@ -163,8 +170,8 @@
android:layout_centerHorizontal="true" android:layout_centerHorizontal="true"
android:background="#FF151721" android:background="#FF151721"
android:gravity="center" android:gravity="center"
android:visibility="gone"
android:orientation="horizontal" android:orientation="horizontal"
android:visibility="gone"
app:xui_radius="10dp"> app:xui_radius="10dp">
<ImageView <ImageView
...@@ -647,7 +654,7 @@ ...@@ -647,7 +654,7 @@
android:textSize="14sp" /> android:textSize="14sp" />
<com.xuexiang.xui.widget.button.roundbutton.RoundButton <com.xuexiang.xui.widget.button.roundbutton.RoundButton
android:id="@+id/prevent_acc_invalid" android:id="@+id/prevent_acc_invalid"
android:layout_width="70dp" android:layout_width="70dp"
android:layout_height="25dp" android:layout_height="25dp"
android:gravity="center" android:gravity="center"
...@@ -716,14 +723,14 @@ ...@@ -716,14 +723,14 @@
android:textSize="16sp" /> android:textSize="16sp" />
<TextView <TextView
android:visibility="gone"
android:id="@+id/pre_delay1_unit" android:id="@+id/pre_delay1_unit"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:gravity="center" android:gravity="center"
android:text="ms" android:text="ms"
android:textColor="#FF94949B" android:textColor="#FF94949B"
android:textSize="12sp" /> android:textSize="12sp"
android:visibility="gone" />
</LinearLayout> </LinearLayout>
</LinearLayout> </LinearLayout>
...@@ -765,14 +772,14 @@ ...@@ -765,14 +772,14 @@
android:textSize="16sp" /> android:textSize="16sp" />
<TextView <TextView
android:visibility="gone"
android:id="@+id/net_delay1_unit" android:id="@+id/net_delay1_unit"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:gravity="center" android:gravity="center"
android:text="ms" android:text="ms"
android:textColor="#FF94949B" android:textColor="#FF94949B"
android:textSize="12sp" /> android:textSize="12sp"
android:visibility="gone" />
</LinearLayout> </LinearLayout>
</LinearLayout> </LinearLayout>
...@@ -815,14 +822,14 @@ ...@@ -815,14 +822,14 @@
android:textSize="16sp" /> android:textSize="16sp" />
<TextView <TextView
android:visibility="gone"
android:id="@+id/net_lost1_unit" android:id="@+id/net_lost1_unit"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:gravity="center" android:gravity="center"
android:text="%" android:text="%"
android:textColor="#FF94949B" android:textColor="#FF94949B"
android:textSize="12sp" /> android:textSize="12sp"
android:visibility="gone" />
</LinearLayout> </LinearLayout>
</LinearLayout> </LinearLayout>
</LinearLayout> </LinearLayout>
......
...@@ -2,11 +2,12 @@ ...@@ -2,11 +2,12 @@
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:fitsSystemWindows="true"
android:orientation="vertical"> android:orientation="vertical">
<FrameLayout <FrameLayout
android:layout_marginTop="30dp"
android:id="@+id/common_webview" android:id="@+id/common_webview"
android:layout_marginBottom="50dp"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" /> android:layout_height="match_parent" />
......
...@@ -56,7 +56,8 @@ ...@@ -56,7 +56,8 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="8dp" android:layout_marginTop="8dp"
android:text="DNF合金战士怎么还没出?智慧的引导和奥兹玛怎么进?" android:maxLines="2"
android:ellipsize="end"
android:textColor="#FF000000" android:textColor="#FF000000"
android:textSize="14sp" /> android:textSize="14sp" />
...@@ -65,7 +66,8 @@ ...@@ -65,7 +66,8 @@
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_marginTop="6dp" android:layout_marginTop="6dp"
android:text="DNF合金战士怎么还没出?智慧的引导和奥兹玛怎么进?智慧的引导和奥兹玛怎么进?智慧的引导和奥兹玛怎么进…" android:maxLines="3"
android:ellipsize="end"
android:textColor="#FF4A4A4A" android:textColor="#FF4A4A4A"
android:textSize="14sp" /> android:textSize="14sp" />
...@@ -76,7 +78,7 @@ ...@@ -76,7 +78,7 @@
android:layout_marginTop="12.65dp" android:layout_marginTop="12.65dp"
android:visibility="gone" /> android:visibility="gone" />
<VideoView <fm.jiecao.jcvideoplayer_lib.JCVideoPlayerStandard
android:id="@+id/video_view" android:id="@+id/video_view"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="182.5dp" android:layout_height="182.5dp"
...@@ -90,13 +92,14 @@ ...@@ -90,13 +92,14 @@
android:layout_marginBottom="11dp"> android:layout_marginBottom="11dp">
<TextView <TextView
android:id="@+id/pageViews"
android:layout_width="57.5dp" android:layout_width="57.5dp"
android:layout_height="15dp" android:layout_height="15dp"
android:text="1502次浏览"
android:textColor="#FFB4B4B4" android:textColor="#FFB4B4B4"
android:textSize="11sp" /> android:textSize="11sp" />
<TextView <TextView
android:id="@+id/great_num"
android:layout_width="wrap_content" android:layout_width="wrap_content"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:layout_alignParentRight="true" android:layout_alignParentRight="true"
...@@ -107,6 +110,7 @@ ...@@ -107,6 +110,7 @@
android:textSize="14sp" /> android:textSize="14sp" />
<ImageView <ImageView
android:id="@+id/great_img"
android:layout_width="14dp" android:layout_width="14dp"
android:layout_height="14dp" android:layout_height="14dp"
android:layout_alignParentRight="true" android:layout_alignParentRight="true"
......
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="20dp"
android:layout_marginRight="20dp"
android:orientation="vertical">
<ImageView
android:layout_width="48dp"
android:layout_height="48dp"
android:layout_gravity="center_horizontal"
android:background="@mipmap/game_download" />
<TextView
android:layout_width="70dp"
android:layout_height="20dp"
android:layout_marginTop="8dp"
android:gravity="center"
android:text="游戏下载"
android:textColor="#FF3B3B3B"
android:textSize="14sp" />
</LinearLayout>
...@@ -10,6 +10,7 @@ object HttpConfig { ...@@ -10,6 +10,7 @@ object HttpConfig {
* 主页h5 * 主页h5
*/ */
val UI_MAIN_URL = "https://test-cc-tt-front.orangenet.org.cn/#" val UI_MAIN_URL = "https://test-cc-tt-front.orangenet.org.cn/#"
// val UI_MAIN_URL = "http://10.3.0.217:8080/#"
//隐私协议地址 //隐私协议地址
val privacy_url = "http:wwww.baidu.com" val privacy_url = "http:wwww.baidu.com"
......
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright (C) 2019 by Max Lv <max.c.lv@gmail.com>
Copyright (C) 2019 by Mygod Studio <contact-shadowsocks-android@mygod.be>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
DO NOT EDIT: This file was automagically generated by script.
If you are looking for contributing a translation, read this:
https://discourse.shadowsocks.org/t/poeditor-translation-main-thread/30
-->
<resources>
<string name="quick_toggle">"تغيير"</string>
<string name="remote_dns">"سيرفر ال DNS"</string>
<string name="stat_summary">"ارسل: \t%3$s\t↑\t%1$s
استقبل: \t%4$s\t↓\t%2$s"</string>
<string name="connection_test_testing">"اختبار الاتصال…"</string>
<string name="connection_test_error">"فشل فحص اتصال الانترنت: %s"</string>
<string name="connection_test_fail">"لا يوجد اتصال بالانترنت"</string>
<string name="connection_test_error_status_code">"خطآ رقم: #%d"</string>
<string name="proxy">"السيرفر"</string>
<string name="remote_port">"المنفذ"</string>
<string name="sitekey">"كلمة المرور"</string>
<string name="enc_method">"طريقة التشفير"</string>
</resources>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright (C) 2019 by Max Lv <max.c.lv@gmail.com>
Copyright (C) 2019 by Mygod Studio <contact-shadowsocks-android@mygod.be>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
DO NOT EDIT: This file was automagically generated by script.
If you are looking for contributing a translation, read this:
https://discourse.shadowsocks.org/t/poeditor-translation-main-thread/30
-->
<resources>
<string name="quick_toggle">"Alternar"</string>
<string name="remote_dns">"DNS Remoto"</string>
<string name="stat_summary">"Enviado: \t\t\t\t\t%3$s\t↑\t%1$s
Recibido: \t%4$s\t↓\t%2$s"</string>
<string name="connection_test_testing">"Probando…"</string>
<string name="connection_test_available">"Éxito: El establecimiento de la comunicación HTTPS tomó %dms"</string>
<string name="connection_test_error">"Fallo al detectar conexión a Internet: %s"</string>
<string name="connection_test_fail">"Internet no disponible"</string>
<string name="connection_test_error_status_code">"Código de error: #%d"</string>
<!-- proxy category -->
<string name="profile_name">"Nombre de Perfil"</string>
<string name="proxy">"Servidor"</string>
<string name="remote_port">"Puerto Remoto"</string>
<string name="sitekey">"Contraseña"</string>
<string name="enc_method">"Método de Cifrado"</string>
<!-- feature category -->
<string name="ipv6">"Ruta IPv6"</string>
<string name="ipv6_summary">"Redireccionar tráfico IPv6 a ruta"</string>
<string name="route_list">"Ruta"</string>
<string name="route_entry_gfwlist">"Lista GFW"</string>
<string name="proxied_apps">"Apps en modo VPN"</string>
<string name="proxied_apps_summary">"Configurar modo VPN para las apps seleccionadas"</string>
<string name="on">"Encendido"</string>
<!-- Fuzzy -->
<string name="bypass_apps">"Modo Bypass"</string>
<string name="auto_connect">"Conexión Automática"</string>
<!-- Fuzzy -->
<string name="auto_connect_summary">"Activar Shadowsocks al iniciar"</string>
<string name="tcp_fastopen_summary_unsupported">"Versión del Núcleo sin soporte: %s &lt; 3.7.1"</string>
<string name="udp_dns">"Enviar DNS sobre UDP"</string>
<!-- notification category -->
<string name="forward_success">"Shadowsocks inició."</string>
<string name="invalid_server">"Nombre de servidor inválido"</string>
<string name="service_failed">"Fallo al conectar al servidor remoto"</string>
<string name="stop">"Detener"</string>
<string name="stopping">"Apagando…"</string>
<string name="reboot_required">"Fallo al iniciar servicio VPN. Puede que tengas que reiniciar tu dispositivo."</string>
<string name="profile_invalid_input">"No se ha encontrado datos de perfil válidos."</string>
<!-- alert category -->
<string name="profile_empty">"Por favor selecciona un perfil"</string>
<string name="proxy_empty">"Proxy/Contraseña no deberían estar vacíos"</string>
<string name="connect">"Conectar"</string>
<!-- menu category -->
<string name="profiles">"Perfiles"</string>
<string name="settings">"Preferencias"</string>
<string name="faq">"FAQ"</string>
<string name="about">"Acerca de"</string>
<string name="edit">"Editar"</string>
<string name="share">"Compartir"</string>
<string name="add_profile">"Agregar Perfil"</string>
<string name="action_apply_all">"Aplicar preferencias a todos los Perfiles"</string>
<string name="action_export">"Exportar a portapapeles"</string>
<string name="action_import">"Importar desde portapapeles"</string>
<string name="action_export_msg">"¡Exportado satisfactoriamente!"</string>
<string name="action_export_err">"Fallo al exportar."</string>
<string name="action_import_msg">"¡Importado satisfactoriamente!"</string>
<string name="action_import_err">"Fallo al importar."</string>
<!-- profile -->
<string name="profile_config">"Configuración de Perfil"</string>
<string name="delete">"Remover"</string>
<string name="delete_confirm_prompt">"¿Estás seguro de querer remover este perfil?"</string>
<!-- Fuzzy -->
<string name="share_qr_nfc">"Código QR/NFC"</string>
<string name="add_profile_dialog">"Agregar este Perfil Shadowsocks?"</string>
<string name="add_profile_methods_scan_qr_code">"Escanear código QR"</string>
<plurals name="removed">
<item quantity="one">"Removido"</item>
<item quantity="other">"%d elementos removidos"</item>
</plurals>
<string name="undo">"Deshacer"</string>
<!-- tasker -->
<string name="toggle_service_state">"Iniciar el servicio"</string>
<string name="start_service_default">"Conectar al servidor actual"</string>
<string name="start_service">"Conectar a %s"</string>
<string name="stop_service">"Cambiar a %s"</string>
<string name="profile_default">"Usar el perfil actual"</string>
<!-- status -->
<string name="sent">"Enviado:"</string>
<string name="received">"Recibido:"</string>
<!-- status -->
<string name="connecting">"Conectando…"</string>
<string name="vpn_connected">"Conectado, presiona para verificar la conexión"</string>
<string name="not_connected">"No conectado"</string>
<!-- acl -->
<string name="custom_rules">"Reglas personalizadas"</string>
<string name="action_add_rule">"Agregar regla(s)…"</string>
<string name="edit_rule">"Editar regla"</string>
<string name="route_entry_all">"Todo"</string>
<!-- plugin -->
<string name="plugin">"Complemento"</string>
<string name="plugin_configure">"Configurar…"</string>
<string name="plugin_disabled">"Deshabilitado"</string>
<string name="plugin_unknown">"Complemento desconocido %s"</string>
<string name="plugin_untrusted">"Precaución: Este complemento no parece venir de una fuente confiable."</string>
<string name="profile_plugin">"Complemento: %s"</string>
<string name="add_profile_scanner_permission_required">"Se requiere permiso de cámara para escanear códigos QR."</string>
<!-- notification category -->
<string name="service_vpn">"Servicio VPN"</string>
<string name="add_profile_methods_manual_settings">"Configuración manual"</string>
<!-- misc -->
<string name="advanced">"Avanzado"</string>
<!-- misc -->
<string name="service_mode">"Modo de servicio"</string>
<string name="service_mode_proxy">"Sólo Proxy"</string>
<string name="service_mode_vpn">"VPN"</string>
<string name="port_proxy">"Puerto proxy SOCKS5"</string>
<string name="port_local_dns">"Puerto DNS local"</string>
<string name="service_proxy">"Servicio Proxy"</string>
<string name="service_transproxy">"Servicio Transproxy"</string>
<string name="vpn_permission_denied">"Permiso denegado al crear servicio VPN"</string>
<string name="direct_boot_aware_summary">"La información del perfil seleccionado será menos protegida"</string>
<string name="action_import_file">"Importar desde archivo…"</string>
<string name="night_mode">"Modo nocturno"</string>
<string name="night_mode_system">"Seguir sistema"</string>
<string name="night_mode_auto">"Auto"</string>
<string name="night_mode_on">"Encendido"</string>
<string name="night_mode_off">"Apagado"</string>
<string name="send_email">"Enviar email"</string>
<string name="action_export_more">"Exportar…"</string>
<string name="action_export_file">"Exportar a archivo…"</string>
<string name="share_over_lan">"Compartir por LAN"</string>
<string name="connection_test_pending">"Verificar conectividad"</string>
<string name="file_manager_missing">"Por favor, instala un explorador de archivos como MiXplorer"</string>
<string name="action_replace_file">"Reemplazar desde archivo…"</string>
</resources>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright (C) 2019 by Max Lv <max.c.lv@gmail.com>
Copyright (C) 2019 by Mygod Studio <contact-shadowsocks-android@mygod.be>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
DO NOT EDIT: This file was automagically generated by script.
If you are looking for contributing a translation, read this:
https://discourse.shadowsocks.org/t/poeditor-translation-main-thread/30
-->
<resources>
<string name="app_name">"شدوساکس"</string>
<string name="remote_dns">"دی‌ان‌اس سرور"</string>
<string name="connection_test_testing">"در حال آزمایش…"</string>
<string name="connection_test_fail">"ارتباط با اینترنت فراهم نیست"</string>
<!-- proxy category -->
<string name="profile_name">"نام پروفایل"</string>
<string name="proxy">"سرور"</string>
<string name="remote_port">"پورت سرور"</string>
<string name="sitekey">"کلمه عبور"</string>
<string name="enc_method">"طریقه رمزگذاری"</string>
<!-- feature category -->
<string name="ipv6">"مسیر IPv6"</string>
<string name="ipv6_summary">"ترافیک IPv6 را به سرور هدایت کن"</string>
<string name="route_list">"روت"</string>
<string name="route_entry_gfwlist">"فهرست فیلترینگ"</string>
<string name="proxied_apps">"حالت "</string>
<string name="proxied_apps_summary">"تنظیم حالت وی‌پی‌ان برای اپلیکیشن‌های انتخاب شده"</string>
<string name="on">"روشن"</string>
<!-- Fuzzy -->
<string name="bypass_apps">"حالت صرف‌نظر"</string>
<string name="bypass_apps_summary">"این اپلیکیشن‌ها از وی‌پی‌ان استفاده نکنند"</string>
<string name="auto_connect">"وصل‌شدن اتوماتیک"</string>
<!-- Fuzzy -->
<string name="auto_connect_summary">"فعال‌شدن شدوساکس لحظه روشن‌شدن گوشی"</string>
<!-- Fuzzy -->
<string name="udp_dns">"ارسال دی‌ان‌اس"</string>
<!-- Fuzzy -->
<string name="udp_dns_summary">"ارسال کلیه درخواست‌های دی‌ان‌اس به سرور "</string>
<!-- notification category -->
<string name="forward_success">"شدوساکس فعال شد."</string>
<string name="invalid_server">"آدرس سرور نامعتبر است"</string>
<string name="service_failed">"اتصال به سرور ناموفق بود!"</string>
<string name="stop">"غیرفعال‌کردن"</string>
<string name="stopping">"در حال قطع‌کردن اتصال…"</string>
<string name="reboot_required">"راه‌اندازی سرویس وی‌پی‌ان ناموفق بود. شاید مشکل با روشن خاموش کردن دستگاه حل شود."</string>
<string name="profile_invalid_input">"هیچ پروفایل معتبری یافت نشد!"</string>
<!-- alert category -->
<string name="profile_empty">"لطفا یک پروفایل انتخاب کنید."</string>
<string name="proxy_empty">"پروکسی یا کلمه عبور نباید خالی باشند!"</string>
<string name="connect">"اتصال"</string>
<!-- menu category -->
<string name="profiles">"پروفایل‌ها"</string>
<string name="settings">"تنظیمات"</string>
<string name="faq">"سوالات متداول"</string>
<string name="about">"درباره ما"</string>
<string name="edit">"ویرایش"</string>
<string name="share">"به اشتراک گذاری"</string>
<string name="add_profile">"افزودن پروفایل"</string>
<string name="action_apply_all">"اعمال تنظیمات برای همه پروفایل‌ها"</string>
<string name="action_export">"صدور به کلیپ بورد"</string>
<string name="action_import">"ورود از کلیپ بورد"</string>
<string name="action_export_msg">"صدور موفقیت‌آمیز!"</string>
<string name="action_export_err">"صدور ناموفق."</string>
<string name="action_import_msg">"ورود موفقیت‌آمیز"</string>
<string name="action_import_err">"ورود ناموفق."</string>
<!-- profile -->
<string name="profile_config">"تنظیمات پروفایل"</string>
<string name="delete">"حذف"</string>
<string name="delete_confirm_prompt">"آیا مطمئن هستید که می‌خواهید این پروفایل را حذف کنید؟"</string>
<!-- Fuzzy -->
<string name="share_qr_nfc">"NFC یا QR Code"</string>
<string name="add_profile_dialog">"این پروفایل اضافه شود؟"</string>
<string name="add_profile_methods_scan_qr_code">"اسکن‌کردن QR Code"</string>
<string name="undo">"بازگرداندن"</string>
<!-- tasker -->
<string name="toggle_service_state">"فعال‌کردن سرویس"</string>
<string name="start_service_default">"وصل‌شدن به سرور فعلی"</string>
<string name="start_service">"وصل شدن به "</string>
<string name="profile_default">"استفاده از پروفایل فعلی"</string>
<!-- status -->
<string name="sent">"فرستاده‌شده:"</string>
<string name="received">"دریافت‌شده:"</string>
<!-- status -->
<string name="connecting">"در حال اتصال…"</string>
<string name="vpn_connected">"وصل شد. برای بررسی اتصال ضربه (Tap) بزنید."</string>
<string name="not_connected">"اتصال برقرار نیست!"</string>
<!-- acl -->
<string name="custom_rules">"قواعد دلخواه"</string>
<string name="action_add_rule">"اضافه کردن قواعد"</string>
<string name="edit_rule">"ویرایش قواعد"</string>
<string name="route_entry_all">"همه"</string>
<string name="route_entry_bypass_lan">"صرف‌نظر کردن از شبکه داخلی"</string>
<string name="route_entry_bypass_chn">"صرف‌نظر کردن از سایت‌های داخل ایران"</string>
<string name="route_entry_bypass_lan_chn">"صرف‌نظر کردن از شبکه داخلی و سایت‌های داخل ایران"</string>
<string name="route_entry_chinalist">"فهرست ایران"</string>
<string name="plugin_configure">"تنظیم"</string>
<string name="plugin_disabled">"خاموش"</string>
<string name="add_profile_scanner_permission_required">"مجوز دوربین برای اسکن کردن کد QR مورد نیاز است."</string>
<!-- notification category -->
<string name="service_vpn">"سرویس وی‌پی‌ان"</string>
<string name="add_profile_methods_manual_settings">"تنظیمات دستی"</string>
<!-- misc -->
<string name="advanced">"پیشرفته"</string>
<!-- misc -->
<string name="service_mode">"وضعیت سرویس"</string>
<string name="service_mode_proxy">"فقط پروکسی"</string>
<string name="service_mode_vpn">"وی‌پی‌ان"</string>
<string name="service_mode_transproxy">"ترانس‌پروکسی"</string>
<string name="port_proxy">"پورت پروکسی SOCKS5"</string>
<string name="port_local_dns">"پورت دی‌ان‌اس محلی"</string>
<string name="port_transproxy">"پورت ترانس‌پروکسی"</string>
<string name="service_proxy">"سرویس پروکسی"</string>
<string name="service_transproxy">"سرویس ترانس‌پروکسی"</string>
<string name="vpn_permission_denied">"مجوز برای ساخت وی‌پی‌ان فراهم نیست"</string>
<string name="auto_connect_summary_v24">"شدوساکس را از ابتدا فعال کن. توصیه می‌شود که به جای این گزینه از گزینه always-on vpn استفاده شود"</string>
<string name="action_import_file">"ورودی از فایل…"</string>
</resources>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright (C) 2019 by Max Lv <max.c.lv@gmail.com>
Copyright (C) 2019 by Mygod Studio <contact-shadowsocks-android@mygod.be>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
DO NOT EDIT: This file was automagically generated by script.
If you are looking for contributing a translation, read this:
https://discourse.shadowsocks.org/t/poeditor-translation-main-thread/30
-->
<resources>
<string name="quick_toggle">"Basculer"</string>
<string name="remote_dns">"DNS Distant"</string>
<string name="stat_summary">"Envoyé : \t%3$s\t↑\t%1$s
Reçu : \t\t\t%4$s\t↓\t%2$s"</string>
<string name="connection_test_testing">"Essai…"</string>
<string name="connection_test_available">"Succès : le handshake HTTPS a pris %dms"</string>
<string name="connection_test_error">"Impossible de détecter la connexion Internet :%s"</string>
<string name="connection_test_fail">"Internet Indisponible"</string>
<string name="connection_test_error_status_code">"Code de l'Erreur : #%d"</string>
<!-- proxy category -->
<string name="profile_name">"Nom du Profil"</string>
<string name="proxy">"Serveur"</string>
<string name="remote_port">"Port Distant"</string>
<string name="sitekey">"Mot de passe"</string>
<string name="enc_method">"Méthode d'Encryption"</string>
<!-- feature category -->
<string name="ipv6">"Route IPv6"</string>
<string name="ipv6_summary">"Rediriger le trafic IPv6 vers le serveur distant"</string>
<string name="route_list">"Route"</string>
<string name="route_entry_gfwlist">"Liste GFW"</string>
<string name="proxied_apps">"Mode VPN Apps"</string>
<string name="proxied_apps_summary">"Configurer le mode VPN pour les applications sélectionnées"</string>
<string name="on">"Activé"</string>
<!-- Fuzzy -->
<string name="bypass_apps">"Mode exclusion"</string>
<string name="bypass_apps_summary">"Activer cette option pour exclure les applications sélectionnées"</string>
<string name="auto_connect">"Connection auto"</string>
<!-- Fuzzy -->
<string name="auto_connect_summary">"Activer Shadowsocks au démarrage"</string>
<!-- Fuzzy -->
<string name="tcp_fastopen_summary">"Activer nécessite la permission ROOT"</string>
<string name="tcp_fastopen_summary_unsupported">"Version du noyau non supportée : %s &lt;3.7.1"</string>
<!-- Fuzzy -->
<string name="udp_dns_summary">"Faire suivre toutes les requêtes DNS au serveur distant"</string>
<!-- notification category -->
<string name="forward_success">"Shadowsocks a démarré"</string>
<string name="invalid_server">"Nom de serveur invalide"</string>
<string name="service_failed">"Échec de la connexion au serveur distant"</string>
<string name="stop">"Stopper"</string>
<string name="stopping">"Arrêt en cours…"</string>
<string name="reboot_required">"Impossible de démarrer le service VPN. Vous devrez peut-être redémarrer votre appareil."</string>
<string name="profile_invalid_input">"Pas de donnée de profil valide trouvée."</string>
<!-- alert category -->
<string name="profile_empty">"Veuillez sélectionner un profil"</string>
<string name="proxy_empty">"Le mot de passe/proxy ne doit pas être vide"</string>
<string name="connect">"Connexion"</string>
<!-- menu category -->
<string name="profiles">"Profils"</string>
<string name="settings">"Paramètres"</string>
<string name="about">"À propos"</string>
<string name="edit">"Éditer"</string>
<string name="share">"Partager"</string>
<string name="add_profile">"Ajouter un Profil"</string>
<string name="action_apply_all">"Appliquer les Paramètres à tous les Profils"</string>
<string name="action_export">"Exporter vers le presse-papiers"</string>
<string name="action_import">"Importer depuis le presse-papiers"</string>
<string name="action_export_msg">"Exporté avec succès !"</string>
<string name="action_export_err">"Échec de l'exportation"</string>
<string name="action_import_msg">"Importé avec succès !"</string>
<string name="action_import_err">"Échec de l’importation."</string>
<!-- profile -->
<string name="profile_config">"Config profil"</string>
<string name="delete">"Supprimer"</string>
<string name="delete_confirm_prompt">"Êtes-vous sûr de vouloir supprimer ce profil?"</string>
<!-- Fuzzy -->
<string name="share_qr_nfc">"QR Code/NFC"</string>
<string name="add_profile_dialog">"Ajouter ce profil Shadowsocks?"</string>
<string name="add_profile_methods_scan_qr_code">"Scanner le QR Code"</string>
<plurals name="removed">
<item quantity="one">"Supprimé"</item>
<item quantity="other">"%d éléments supprimés"</item>
</plurals>
<string name="undo">"Annuler"</string>
<!-- tasker -->
<string name="toggle_service_state">"Démarrer le service"</string>
<string name="start_service_default">"Se connecter au serveur courant"</string>
<string name="start_service">"Se connecter à %s"</string>
<string name="stop_service">"Basculer sur %s"</string>
<string name="profile_default">"Utiliser le profil actuel"</string>
<!-- status -->
<string name="sent">"Envoyé :"</string>
<string name="received">"Reçu :"</string>
<!-- status -->
<string name="connecting">"Connexion…"</string>
<string name="vpn_connected">"Connecté, toucher pour vérifier la connexion"</string>
<string name="not_connected">"Non connecté"</string>
<!-- acl -->
<string name="custom_rules">"Règles personnalisées"</string>
<string name="action_add_rule">"Ajouter une/des règle(s)"</string>
<string name="edit_rule">"Modifier une règle"</string>
<string name="route_entry_all">"Toutes"</string>
<string name="route_entry_bypass_lan">"Exclure le LAN"</string>
<string name="route_entry_bypass_chn">"Exclure la Chine continentale"</string>
<string name="route_entry_bypass_lan_chn">"Exclure LAN et Chine continentale"</string>
<string name="acl_rule_templates_generic">"Pattern PCRE sous-réseau ou hôte"</string>
<string name="acl_rule_templates_domain">"Nom de domaine et tous ses noms de sous-domaines"</string>
<string name="plugin_configure">"Configurer…"</string>
<string name="plugin_disabled">"Désactivé"</string>
<string name="plugin_unknown">"Plugin inconnu %s"</string>
<string name="plugin_untrusted">"Attention : ce plugin ne semble pas provenir d'une source fiable reconnue."</string>
<string name="profile_plugin">"Plugin : %s"</string>
<string name="add_profile_scanner_permission_required">"La permission Appareil photo est nécessaire pour scanner le QR code."</string>
<!-- notification category -->
<string name="service_vpn">"Service VPN"</string>
<string name="add_profile_methods_manual_settings">"Paramètres manuels"</string>
<!-- misc -->
<string name="advanced">"Avancé"</string>
<!-- misc -->
<string name="service_mode">"Mode Service"</string>
<string name="service_mode_proxy">"Proxy seul"</string>
<string name="port_proxy">"Port proxy SOCKS5"</string>
<string name="port_local_dns">"Port DNS local"</string>
<string name="port_transproxy">"Port Transproxy"</string>
<string name="service_proxy">"Service Proxy"</string>
<string name="service_transproxy">"Service Transproxy"</string>
<string name="vpn_permission_denied">"Permission de créer un service VPN refusée"</string>
<string name="auto_connect_summary_v24">"Activer Shadowsocks au démarrage. Plutôt recommandé d'utiliser le VPN permanent"</string>
<string name="direct_boot_aware">"Activation-Désactivation sur écran verrouillé"</string>
<string name="direct_boot_aware_summary">"Vos informations de profil sélectionnées seront moins protégées"</string>
<string name="acl_rule_online_config">"URL de config en ligne"</string>
<string name="action_import_file">"Importer depuis un fichier…"</string>
<string name="night_mode">"Mode nuit"</string>
<string name="night_mode_system">"Suivre la config système"</string>
<string name="send_email">"Envoyer un email"</string>
<string name="action_export_more">"Exporter…"</string>
<string name="action_export_file">"Exporter dans un fichier…"</string>
<string name="cleartext_http_warning">"Le trafic HTTP en clair n'est pas sécurisé"</string>
<string name="share_over_lan">"Partager sur le réseau local"</string>
<string name="connection_test_pending">"Vérifier la connectivité"</string>
<string name="file_manager_missing">"Veuillez installer un gestionnaire de fichier tel que MiXplorer"</string>
</resources>
\ No newline at end of file
This diff is collapsed.
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright (C) 2019 by Max Lv <max.c.lv@gmail.com>
Copyright (C) 2019 by Mygod Studio <contact-shadowsocks-android@mygod.be>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
DO NOT EDIT: This file was automagically generated by script.
If you are looking for contributing a translation, read this:
https://discourse.shadowsocks.org/t/poeditor-translation-main-thread/30
-->
<resources>
<string name="quick_toggle">"켜기/끄기"</string>
<string name="remote_dns">"원격 DNS"</string>
<string name="stat_summary">"송신: \t%3$s\t↑\t%1$s/s
수신: \t%4$s\t↓\t%2$s/s"</string>
<string name="connection_test_testing">"검사 중…"</string>
<string name="connection_test_error">"인터넷 연결을 찾을 수 없습니다: %s"</string>
<string name="connection_test_fail">"인터넷에 연결할 수 없습니다"</string>
<string name="connection_test_error_status_code">"오류 코드: #%d"</string>
<!-- proxy category -->
<string name="profile_name">"프로필 이름"</string>
<string name="proxy">"서버 주소"</string>
<string name="remote_port">"원격 포트"</string>
<string name="sitekey">"비밀번호"</string>
<string name="enc_method">"암호화 방법"</string>
<!-- feature category -->
<string name="ipv6">"IPv6 라우팅"</string>
<string name="ipv6_summary">"IPv6 트래픽도 원격으로 리다이렉트 합니다"</string>
<string name="route_list">"라우팅 대상"</string>
<string name="route_entry_gfwlist">"GFW 리스트"</string>
<!-- Fuzzy -->
<string name="proxied_apps">"원하는 앱만 프락시 적용하기"</string>
<string name="proxied_apps_summary">"선택한 앱에만 프락시를 적용합니다"</string>
<string name="on">"활성화"</string>
<!-- Fuzzy -->
<string name="bypass_apps">"선택된 앱들만 프록시 적용 제외하기"</string>
<string name="bypass_apps_summary">"이 옵션을 활성화하면 선택된 앱들은 프락시를 사용하지 않습니다"</string>
<string name="auto_connect">"자동 접속"</string>
<!-- Fuzzy -->
<string name="auto_connect_summary">"장치가 켜질 때 Shadowsocks를 자동으로 활성화합니다"</string>
<!-- Fuzzy -->
<string name="tcp_fastopen_summary">"루트 권한이 필요합니다"</string>
<string name="tcp_fastopen_summary_unsupported">"지원하지 않는 버전의 커널입니다: %s &lt; 3.7.1"</string>
<!-- Fuzzy -->
<string name="udp_dns">"DNS 포워딩"</string>
<!-- Fuzzy -->
<string name="udp_dns_summary">"모든 DNS 요청을 외부로 포워딩 합니다"</string>
<!-- notification category -->
<string name="forward_success">"Shadowsocks가 시작되었습니다"</string>
<string name="invalid_server">"잘못된 서버 이름입니다"</string>
<string name="service_failed">"원격 서버에 접속하는 데 실패했습니다"</string>
<string name="stop">"중지"</string>
<string name="stopping">"종료 중…"</string>
<string name="reboot_required">"VPN 서비스를 시작하는 데 실패했습니다. 장치를 재시작해 보세요."</string>
<string name="profile_invalid_input">"올바른 프로필 데이터를 찾을 수 없습니다"</string>
<!-- alert category -->
<string name="profile_empty">"프로필을 선택해 주세요"</string>
<string name="proxy_empty">"서버 주소와 비밀번호는 반드시 입력해야 합니다"</string>
<string name="connect">"접속"</string>
<!-- menu category -->
<string name="profiles">"프로필"</string>
<string name="settings">"설정"</string>
<string name="faq">"자주 묻는 질문"</string>
<string name="about">"이 앱에 대하여"</string>
<string name="edit">"수정"</string>
<string name="share">"공유"</string>
<string name="add_profile">"프로필 추가"</string>
<string name="action_apply_all">"설정을 모든 프로필에 적용"</string>
<string name="action_export">"클립보드로 내보내기"</string>
<string name="action_import">"클립보드에서 불러오기"</string>
<string name="action_export_msg">"성공적으로 내보냈습니다"</string>
<string name="action_export_err">"내보내기에 실패했습니다"</string>
<string name="action_import_msg">"성공적으로 불러왔습니다"</string>
<string name="action_import_err">"불러오는 데 실패했습니다"</string>
<!-- profile -->
<string name="profile_config">"프로필 설정"</string>
<string name="delete">"삭제"</string>
<string name="delete_confirm_prompt">"정말 이 프로필을 삭제하시겠습니까?"</string>
<!-- Fuzzy -->
<string name="share_qr_nfc">"QR 코드/NFC"</string>
<string name="add_profile_dialog">"이 Shadowsocks 프로필을 추가하시겠습니까?"</string>
<string name="add_profile_methods_scan_qr_code">"QR 코드 읽기"</string>
<plurals name="removed">
<item quantity="other">"삭제했습니다"</item>
</plurals>
<string name="undo">"실행 취소"</string>
<!-- tasker -->
<string name="toggle_service_state">"서비스 시작"</string>
<string name="start_service_default">"현재 서버에 연결"</string>
<string name="start_service">"%s로 연결"</string>
<string name="stop_service">"%s로 바꾸기"</string>
<string name="profile_default">"현재 프로필 사용"</string>
<!-- status -->
<string name="sent">"송신:"</string>
<string name="received">"수신:"</string>
<!-- status -->
<string name="connecting">"연결 중…"</string>
<string name="vpn_connected">"연결 완료. 탭 하면 연결 상태를 검사합니다."</string>
<string name="not_connected">"연결되지 않음"</string>
<!-- acl -->
<string name="custom_rules">"사용자 정의 규칙"</string>
<string name="acl_rule_templates_generic">"서브넷 혹은 호스트 이름 PCRE 패턴"</string>
<!-- plugin -->
<string name="plugin">"플러그인"</string>
<string name="plugin_configure">"플러그인 설정…"</string>
<string name="plugin_disabled">"비활성화 됨"</string>
<string name="plugin_unknown">"알 수 없는 플러그인: %s"</string>
<string name="plugin_untrusted">"경고: 이 플러그인은 신뢰할 수 있는 출처에서 온 것이 아닌 것 같습니다"</string>
<string name="profile_plugin">"플러그인: %s"</string>
<string name="add_profile_scanner_permission_required">"QR 코드를 읽어 들이려면 카메라 권한이 필요합니다"</string>
</resources>
\ No newline at end of file
This diff is collapsed.
<?xml version="1.0" encoding="utf-8"?>
<!--
Copyright (C) 2019 by Max Lv <max.c.lv@gmail.com>
Copyright (C) 2019 by Mygod Studio <contact-shadowsocks-android@mygod.be>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
DO NOT EDIT: This file was automagically generated by script.
If you are looking for contributing a translation, read this:
https://discourse.shadowsocks.org/t/poeditor-translation-main-thread/30
-->
<resources>
<string name="quick_toggle">"Aç/Kapa"</string>
<string name="remote_dns">"Uzaktan DNS"</string>
<string name="stat_summary">"Yüklendi: \t\t\t\t\t%3$s\t↑\t%1$s
İndirildi: \t%4$s\t↓\t%2$s"</string>
<string name="connection_test_testing">"Test ediliyor…"</string>
<string name="connection_test_error">"İnternet bağlantısı bulunamadı: %s"</string>
<string name="connection_test_fail">"İnternet Bağlantısı Bulunamadı"</string>
<string name="connection_test_error_status_code">"Hata kodu: #%d"</string>
<!-- proxy category -->
<string name="profile_name">"Profil İsmi"</string>
<string name="proxy">"Sunucu"</string>
<string name="remote_port">"Uzaktan Port"</string>
<string name="sitekey">"Şifre"</string>
<string name="enc_method">"Şifreleme Methodu"</string>
<string name="ipv6_summary">"IPv6 trafiğini remote'a yönlendir"</string>
<string name="route_list">"Rota"</string>
<string name="route_entry_gfwlist">"GFW Listesi"</string>
<string name="proxied_apps">"Uygulamalar VPN modu"</string>
<string name="proxied_apps_summary">"Seçili uygulamalar için VPN'i yapılandır"</string>
<string name="on">"Açık"</string>
<!-- Fuzzy -->
<string name="bypass_apps">"Bypass Modu"</string>
<string name="bypass_apps_summary">"Seçili uygulamaları bypass etmek için bu seçeneği açın"</string>
<string name="auto_connect">"Otomatik Bağlan"</string>
<!-- Fuzzy -->
<string name="auto_connect_summary">"Shadowsocks'ı cihazı başlatırken aç"</string>
<!-- Fuzzy -->
<string name="tcp_fastopen_summary">"Açıp kapamak için ROOT yetkisi gerekiyor"</string>
<string name="tcp_fastopen_summary_unsupported">"Desteklenmeyen kernel sürümü: %s &lt; 3.7.1"</string>
<!-- Fuzzy -->
<string name="udp_dns">"DNS yönlendirme"</string>
<!-- Fuzzy -->
<string name="udp_dns_summary">"Tüm DNS isteklerini remote'a yönlendir"</string>
<!-- notification category -->
<string name="forward_success">"Shadowsocks başlatıldı."</string>
<string name="invalid_server">"Geçersiz sunucu ismi"</string>
<string name="service_failed">"Remote sunucuya bağlanma hatası"</string>
<string name="stop">"Dur"</string>
<string name="stopping">"Kapatılıyor…"</string>
<string name="reboot_required">"VPN servisi başlatılırken hata. Cihazınızı yeniden başlatmanız gerekebilir."</string>
<string name="profile_invalid_input">"Geçerli profil verisi bulunamadı."</string>
<!-- alert category -->
<string name="profile_empty">"Lütfen profil seçiniz"</string>
<string name="proxy_empty">"Proxy/Şifre alanları boş olmamalı"</string>
<string name="connect">"Bağlan"</string>
<!-- menu category -->
<string name="profiles">"Profiller"</string>
<string name="settings">"Ayarlar"</string>
<string name="faq">"SSS"</string>
<string name="about">"Hakkında"</string>
<string name="edit">"Düzenle"</string>
<string name="share">"Paylaş"</string>
<string name="add_profile">"Profil Ekle"</string>
<string name="action_apply_all">"Ayarları tüm profillere uygula"</string>
<string name="action_export">"Clipboarda ekle"</string>
<string name="action_import">"Clipboarddan al"</string>
<string name="action_export_msg">"Ekleme başarılı!"</string>
<string name="action_export_err">"Ekleme başarısız."</string>
<string name="action_import_msg">"Alım başarılı!"</string>
<string name="action_import_err">"Alım başarısız."</string>
<!-- profile -->
<string name="profile_config">"Profil ayarları"</string>
<string name="delete">"Kaldır"</string>
<string name="delete_confirm_prompt">"Bu profili kaldırmak istediğinize emin misiniz?"</string>
<!-- Fuzzy -->
<string name="share_qr_nfc">"QR kodu/NFC"</string>
<string name="add_profile_dialog">"Bu Shadowsocks Profilini ekle?"</string>
<string name="add_profile_methods_scan_qr_code">"QR kodu tarat"</string>
<plurals name="removed">
<item quantity="one">"Kaldırıldı"</item>
<item quantity="other">"%d nesne kaldırıldı"</item>
</plurals>
<string name="undo">"Geri al"</string>
<!-- tasker -->
<string name="toggle_service_state">"Servisi başlat"</string>
<string name="start_service_default">"Şu anki sunucuya bağlan"</string>
<string name="start_service">"%s 'a bağlan"</string>
<string name="stop_service">"%s 'a çevir"</string>
<string name="profile_default">"Şu anki profili kullan"</string>
<!-- status -->
<string name="sent">"Gönderildi:"</string>
<string name="received">"Alındı:"</string>
<!-- status -->
<string name="connecting">"Bağlanılıyor…"</string>
<string name="vpn_connected">"Bağlandı, test etmek için tıklayın"</string>
<string name="not_connected">"Bağlı değil"</string>
<!-- acl -->
<string name="custom_rules">"Kişisel kurallar"</string>
<string name="action_add_rule">"Kural(lar) ekle…"</string>
<string name="edit_rule">"Kuralları düzenle"</string>
<string name="route_entry_all">"Hepsi"</string>
<string name="route_entry_bypass_lan">"LAN bypassla"</string>
<string name="route_entry_bypass_chn">"Çin Anakara'sını bypassla"</string>
<string name="route_entry_bypass_lan_chn">"Lan ve Çin Anakarası'nı bypassla"</string>
<string name="route_entry_chinalist">"Çin lıstesı"</string>
<string name="acl_rule_templates_generic">"Subnet veya Sunucu Adı PCRE düzeni"</string>
<string name="acl_rule_templates_domain">"Domain ve alt domain isimleri"</string>
<!-- plugin -->
<string name="plugin">"Eklenti"</string>
<string name="plugin_configure">"Ayarla…"</string>
<string name="plugin_disabled">"Kapalı"</string>
<string name="plugin_unknown">"Bilinmeyen eklenti %s"</string>
<string name="plugin_untrusted">"Dikkat: Bu eklenti bilinen bir kaynaktan değil."</string>
<string name="profile_plugin">"Eklenti: %s"</string>
<string name="add_profile_scanner_permission_required">"QR kodu okumak için kamera izni gerekli."</string>
<!-- notification category -->
<string name="service_vpn">"VPN Servisi"</string>
<string name="add_profile_methods_manual_settings">"Manuel Ayarlar"</string>
<!-- misc -->
<string name="advanced">"Gelişmiş"</string>
<!-- misc -->
<string name="service_mode">"Servis modu"</string>
<string name="service_mode_proxy">"Sadece proxy"</string>
<string name="port_proxy">"SOCKS5 proxy portu"</string>
<string name="port_local_dns">"Yerel DNS portu"</string>
<string name="port_transproxy">"Transproxy portu"</string>
<string name="service_proxy">"Proxy Servisi"</string>
<string name="service_transproxy">"Transproxy Servisi"</string>
<string name="vpn_permission_denied">"VPN servisi yaratma isteği reddedildi"</string>
<string name="auto_connect_summary_v24">"Shadowsockı cihazla beraber başlat. Bunun yerine her zaman açık VPN kullanılması tavsiye edilirö"</string>
<string name="direct_boot_aware">"Ekran kitliyken açıp kapamaya izin ver."</string>
<string name="direct_boot_aware_summary">"Seçili profil bilginiz daha az korunacak."</string>
<string name="acl_rule_online_config">"Online ayarlar URL'i"</string>
<string name="action_import_file">"Dosyadan al…"</string>
<string name="night_mode">"Gece modu"</string>
<string name="night_mode_system">"Takip sistemi"</string>
<string name="night_mode_auto">"Oto"</string>
<string name="night_mode_on">"Açık"</string>
<string name="night_mode_off">"Kapalı"</string>
</resources>
\ No newline at end of file
This diff is collapsed.
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<resources> <resources>
<string name="app_name">Shadowsocks</string> <string name="app_name">TT加速器</string>
<string name="quick_toggle">Toggle</string> <string name="quick_toggle">Toggle</string>
<string name="send_email">Send email</string> <string name="send_email">Send email</string>
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment