18034727885
2026-07-09 f35664f0ad753df3dc4ca3b47c2f91263973af34
修复初始语言非法语的问题
26个文件已修改
337 ■■■■■ 已修改文件
app/src/main/java/com/igo/user/IGoApplication.kt 21 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/igo/user/dialog/ChooseBirthEnglishDialog.kt 4 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/igo/user/dialog/ChooseReserveTimeDialog.kt 4 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/igo/user/network/Functions.kt 3 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/igo/user/network/HttpManager.kt 46 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/igo/user/network/RRetrofit.kt 101 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/igo/user/ui/logistics/LogisticsGuideActivity.kt 4 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/igo/user/ui/mine/CommitGoodsActivity.kt 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/igo/user/ui/mine/LanguageActivity.kt 4 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/igo/user/ui/mine/ShareAppActivity.kt 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/igo/user/ui/mine/UserInfoActivity.kt 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/igo/user/ui/mine/adapter/MyCouponAdapter.kt 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/igo/user/ui/mine/adapter/TripOrderAdapter.kt 4 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/igo/user/ui/trip/ChoosePositionActivity.kt 4 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/igo/user/ui/trip/MapTripFragment.kt 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/igo/user/ui/trip/OrderDetailActivity.kt 5 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/igo/user/ui/trip/OrderDetailWithMapActivity.kt 13 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/igo/user/ui/trip/OrderOtherActivity.kt 4 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/igo/user/ui/trip/PriceDetailActivity.kt 4 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/igo/user/ui/trip/TripActivity.kt 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/igo/user/utils/google/AMapKit.kt 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/res/layout/activity_login.xml 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xldutils-kotlin/src/main/java/cn/sinata/xldutils/activity/BaseActivity.kt 4 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xldutils-kotlin/src/main/java/cn/sinata/xldutils/rxutils/Error.kt 8 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xldutils-kotlin/src/main/java/cn/sinata/xldutils/rxutils/ResultCommonSubscriber.kt 4 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
xldutils-kotlin/src/main/java/cn/sinata/xldutils/utils/LanguageUtil.java 47 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
app/src/main/java/com/igo/user/IGoApplication.kt
@@ -6,7 +6,6 @@
import android.app.Application
import android.content.Intent
import android.os.Bundle
import android.text.TextUtils
import android.util.Log
import androidx.appcompat.app.AppCompatActivity
import androidx.core.os.bundleOf
@@ -18,6 +17,7 @@
import cn.sinata.rxnetty.NettyClient
import cn.sinata.xldutils.activity.BaseActivity
import cn.sinata.xldutils.application.BaseApplication
import cn.sinata.xldutils.utils.LanguageUtil
import cn.sinata.xldutils.utils.SPUtils
import cn.sinata.xldutils.utils.myToast
import com.google.android.gms.maps.MapsInitializer
@@ -31,6 +31,7 @@
import com.igo.user.interfaces.StringCallback
import com.igo.user.network.Apis
import com.igo.user.network.HttpManager
import com.igo.user.network.RRetrofit
import com.igo.user.network.entity.TrippingInfo
import com.igo.user.network.request
import com.igo.user.ui.MainActivity
@@ -59,7 +60,7 @@
        appContext = this
        // initializeRecaptchaClient()
        registerActivityLifecycleCallbacks(this)
        setDefaultLanguage()
        LanguageUtil.setDefaultLanguage(Const.Language.DEFAULT_LANGUAGE)
        DownloadLibrary.init(
            this,
            resources.getIdentifier("ic_launcher", "mipmap", packageName),
@@ -78,14 +79,6 @@
        ) { renderer ->
            Log.e(Const.GoogleTag, "LATEST renderer:${renderer.name}")
//            initializeConsumerSdk()
        }
    }
    //设置默认语言
    private fun setDefaultLanguage() {
        val language = SPUtils.instance().getString("language")
        if (TextUtils.isEmpty(language)) {
            SPUtils.instance().put("language", Const.Language.DEFAULT_LANGUAGE).apply()
        }
    }
@@ -385,12 +378,8 @@
        val userId = SPUtils.instance().getInt(Const.User.USER_ID)
        val token = SPUtils.instance().getString(Const.User.TOKEN)
        if (userId != -1) {
            val language = SPUtils.instance().getString("language")
            val l = when (language) {
                Const.Language.CHINESE -> "1"
                Const.Language.FRENCH -> "3"
                else -> "2"
            }
            val language = LanguageUtil.getLanguage()
            val l = RRetrofit.getLanguageType(language)
            NettyClient.getInstance()
                .sendMessage("{\"data\":{\"userId\":$userId,\"language\":$l,\"token\":\"$token\",\"type\":1},\"method\":\"PING\",\"code\":200,\"msg\":\"SUCCESS\"}")
        }
app/src/main/java/com/igo/user/dialog/ChooseBirthEnglishDialog.kt
@@ -7,7 +7,7 @@
import android.view.ViewGroup
import androidx.fragment.app.DialogFragment
import cn.sinata.xldutils.gone
import cn.sinata.xldutils.utils.SPUtils
import cn.sinata.xldutils.utils.LanguageUtil
import cn.sinata.xldutils.view.WheelView
import com.igo.user.R
import com.igo.user.utils.Const
@@ -23,7 +23,7 @@
    private val wv_2 by lazy { find<WheelView>(R.id.wv_2) }
    private val wv_3 by lazy { find<WheelView>(R.id.wv_3) }
    private val language by lazy { SPUtils.instance().getString("language") }
    private val language by lazy { LanguageUtil.getLanguage() }
    override fun onCreateView(
        inflater: LayoutInflater,
app/src/main/java/com/igo/user/dialog/ChooseReserveTimeDialog.kt
@@ -8,7 +8,7 @@
import android.widget.TextView
import androidx.fragment.app.DialogFragment
import cn.sinata.xldutils.gone
import cn.sinata.xldutils.utils.SPUtils
import cn.sinata.xldutils.utils.LanguageUtil
import cn.sinata.xldutils.utils.toTime
import cn.sinata.xldutils.utils.toTimeEnglish
import cn.sinata.xldutils.utils.toTimeFrench
@@ -40,7 +40,7 @@
    private val tv_title by lazy { find<TextView>(R.id.tv_title) }
    private val language by lazy {
        SPUtils.instance().getString("language")
        LanguageUtil.getLanguage()
    }
    private val dayTimes = arrayListOf<Long>()
app/src/main/java/com/igo/user/network/Functions.kt
@@ -6,6 +6,7 @@
import cn.sinata.xldutils.defaultScheduler
import cn.sinata.xldutils.fragment.BaseFragment
import cn.sinata.xldutils.rxutils.ResultDataSubscriber
import cn.sinata.xldutils.utils.LanguageUtil
import cn.sinata.xldutils.utils.SPUtils
import com.igo.user.utils.Const
import io.reactivex.Flowable
@@ -35,7 +36,7 @@
            activity.dismissDialog()
            if (code == 600) {//token无效
                super.onError(
                    code, when (SPUtils.instance().getString("language")) {
                    code, when (LanguageUtil.getLanguage()) {
                        Const.Language.CHINESE -> "您的身份已过期,请重新登录"
                        Const.Language.FRENCH -> "Votre identité a expiré, veuillez vous reconnecter"
                        else -> "Your identity has expired, please log in again"
app/src/main/java/com/igo/user/network/HttpManager.kt
@@ -1,12 +1,45 @@
package com.igo.user.network
import cn.sinata.xldutils.data.ResultData
import cn.sinata.xldutils.utils.LanguageUtil
import cn.sinata.xldutils.utils.SPUtils
import com.google.gson.JsonObject
import com.igo.user.IGoApplication
import com.igo.user.data.HomeDatas
import com.igo.user.network.entity.*
import com.igo.user.network.entity.Anchor
import com.igo.user.network.entity.AutoCompleteBean
import com.igo.user.network.entity.CarPrice
import com.igo.user.network.entity.City
import com.igo.user.network.entity.Coupon
import com.igo.user.network.entity.DriverInfo
import com.igo.user.network.entity.EmailBean
import com.igo.user.network.entity.Evaluation
import com.igo.user.network.entity.Function
import com.igo.user.network.entity.GeoBean
import com.igo.user.network.entity.Goods
import com.igo.user.network.entity.GoogleToken
import com.igo.user.network.entity.InviteHis
import com.igo.user.network.entity.InvokeHis
import com.igo.user.network.entity.Line
import com.igo.user.network.entity.LogisticProgress
import com.igo.user.network.entity.Message
import com.igo.user.network.entity.MyBankCard
import com.igo.user.network.entity.OpenCity
import com.igo.user.network.entity.Order
import com.igo.user.network.entity.Phone
import com.igo.user.network.entity.PlaceDetailBean
import com.igo.user.network.entity.Point
import com.igo.user.network.entity.RealName
import com.igo.user.network.entity.RouteBean
import com.igo.user.network.entity.SearchBean
import com.igo.user.network.entity.SeatInfo
import com.igo.user.network.entity.ServiceRecord
import com.igo.user.network.entity.Shift
import com.igo.user.network.entity.TrippingInfo
import com.igo.user.network.entity.UserInfo
import com.igo.user.network.entity.VersionData
import com.igo.user.network.entity.WalletRecord
import com.igo.user.network.entity.WalletRecordBean
import com.igo.user.utils.Const
import io.reactivex.Flowable
import okhttp3.MediaType
@@ -28,8 +61,7 @@
     * @param type 1:隐私协议,2:用户协议,3:用户指南,4:法律条款,5:关于我们
     */
    fun getH5(type: Int, language: String? = null): Flowable<ResultData<JsonObject>> {
        val language =
            language ?: SPUtils.instance().getString("language", Const.Language.DEFAULT_LANGUAGE)
        val language = language ?: LanguageUtil.getLanguage()
        return request().getH5(language,type)
    }
@@ -1245,7 +1277,7 @@
     */
    fun geoCode(lat:Double,lon: Double): Flowable<GeoBean> {
        //1=简体中文,2=英语,3=法语
        val language = SPUtils.instance().getString("language")
        val language = LanguageUtil.getLanguage()
        val lan = if (language == Const.Language.CHINESE) "zh-CN" else language
        return request().geoCode(IGoApplication.tripId,"${lat},${lon}",lan)
    }
@@ -1255,7 +1287,7 @@
     */
    fun textsearch(key:String,lat: Double,lon: Double): Flowable<SearchBean> {
        //1=简体中文,2=英语,3=法语
        val language = SPUtils.instance().getString("language")
        val language = LanguageUtil.getLanguage()
        val lan = if (language == Const.Language.CHINESE) "zh-CN" else language
        return request().textsearch(IGoApplication.tripId,key,"${lat},${lon}",lan)
//        return request().textsearch(key,5.586363,-0.187788,IGoApplication.chooseCityName,lan)  //阿克拉 5.586363,-0.187788
@@ -1266,7 +1298,7 @@
     */
    fun autocomplete(key:String,country:String = "gh"): Flowable<AutoCompleteBean> {
        //1=简体中文,2=英语,3=法语
        val language = SPUtils.instance().getString("language")
        val language = LanguageUtil.getLanguage()
        val lan = if (language == Const.Language.CHINESE) "zh-CN" else language
        return request().autocomplete(IGoApplication.tripId,key,lan,"country:$country")
    }
@@ -1282,7 +1314,7 @@
     * 路线
     */
    fun directions(startLat: Double,startLon: Double,endLat: Double,endLon: Double): Flowable<RouteBean> {
        val language = SPUtils.instance().getString("language")
        val language = LanguageUtil.getLanguage()
        val lan = if (language == Const.Language.CHINESE) "zh-CN" else language
        return request().directions(IGoApplication.tripId,"${startLat},${startLon}","${endLat},${endLon}",lan)
    }
app/src/main/java/com/igo/user/network/RRetrofit.kt
@@ -1,6 +1,7 @@
package com.igo.user.network
import android.util.Log
import cn.sinata.xldutils.utils.LanguageUtil
import cn.sinata.xldutils.utils.SPUtils
import com.igo.user.BuildConfig
import com.igo.user.utils.Const
@@ -17,63 +18,71 @@
    private val loggingInterceptor by lazy {
        LoggingInterceptor().apply {
            level = if (BuildConfig.DEBUG) LoggingInterceptor.Level.BODY else LoggingInterceptor.Level.NONE
            level =
                if (BuildConfig.DEBUG) LoggingInterceptor.Level.BODY else LoggingInterceptor.Level.NONE
        }
    }
    private val retrofit: Retrofit = Retrofit.Builder()
            .baseUrl(Apis.BASE_URL)
            .addConverterFactory(JsonConverterFactory.create())
            .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
            .client(OkHttpClient.Builder()
                    .addInterceptor(HttpLoggingInterceptor().apply {
                        level = HttpLoggingInterceptor.Level.BODY
                    })
                .addInterceptor { chain ->
                    var request = chain.request()
                    if (request.method() == "POST"&&!request.url().toString().contains("base/user/image")) {
                        val bodyBuilder = FormBody.Builder()
                        var formBody:FormBody
                        if (request.body() is FormBody) {
                            formBody = request.body() as FormBody
                            (0 until formBody.size()).forEach {
                                bodyBuilder.addEncoded(
                                    formBody.encodedName(it), formBody.encodedValue(
                                        it
                                    )
        .baseUrl(Apis.BASE_URL)
        .addConverterFactory(JsonConverterFactory.create())
        .addCallAdapterFactory(RxJava2CallAdapterFactory.create())
        .client(
            OkHttpClient.Builder()
            .addInterceptor(HttpLoggingInterceptor().apply {
                level = HttpLoggingInterceptor.Level.BODY
            })
            .addInterceptor { chain ->
                var request = chain.request()
                if (request.method() == "POST" && !request.url().toString()
                        .contains("base/user/image")
                ) {
                    val bodyBuilder = FormBody.Builder()
                    var formBody: FormBody
                    if (request.body() is FormBody) {
                        formBody = request.body() as FormBody
                        (0 until formBody.size()).forEach {
                            bodyBuilder.addEncoded(
                                formBody.encodedName(it), formBody.encodedValue(
                                    it
                                )
                            }
                        }
                        if (request.header("language").isNullOrEmpty()) {
                            //1=简体中文,2=英语,3=印尼语
                            val language = SPUtils.instance()
                                .getString("language", Const.Language.DEFAULT_LANGUAGE)
                            formBody = bodyBuilder.addEncoded(
                                "language", when (language) {
                                    Const.Language.CHINESE -> "1"
                                    Const.Language.FRENCH -> "3"
                                    else -> "2"
                                }
                            ).build()
                            request = request.newBuilder().post(formBody).build()
                            )
                        }
                    }
                    chain.proceed(request)
                    var language = request.header("language")
                    language = if (language.isNullOrEmpty()) {
                        LanguageUtil.getLanguage()!!
                    } else {
                        language
                    }
                    //1=简体中文,2=英语,3=法语
                    formBody = bodyBuilder.addEncoded("language", getLanguageType(language)).build()
                    request = request.newBuilder().post(formBody).build()
                }
                .addInterceptor { chain ->
                    val token = SPUtils.instance().getString(Const.User.TOKEN)
                    val request =
                        if (token.isEmpty()) chain.request() else
                            chain.request().newBuilder().addHeader("Authorization", "Bearer $token").build()
                    Log.e(Const.Tag,request.headers().toString())
                    chain.proceed(request)
                }
                .addInterceptor(loggingInterceptor)
                .build())
            .build()
                chain.proceed(request)
            }
            .addInterceptor { chain ->
                val token = SPUtils.instance().getString(Const.User.TOKEN)
                val request =
                    if (token.isEmpty()) chain.request() else
                        chain.request().newBuilder().addHeader("Authorization", "Bearer $token")
                            .build()
                Log.e(Const.Tag, request.headers().toString())
                chain.proceed(request)
            }
            .addInterceptor(loggingInterceptor)
            .build())
        .build()
    companion object {
        fun instance() = RRetrofit()
        fun getLanguageType(language: String): String {
            return when (language) {
                Const.Language.CHINESE -> "1"
                Const.Language.FRENCH -> "3"
                else -> "2"
            }
        }
    }
    fun <T> create(clazz: Class<T>): T = retrofit.create(clazz)
app/src/main/java/com/igo/user/ui/logistics/LogisticsGuideActivity.kt
@@ -9,7 +9,7 @@
import android.widget.TextView
import androidx.core.os.bundleOf
import cn.sinata.xldutils.toBrowser
import cn.sinata.xldutils.utils.SPUtils
import cn.sinata.xldutils.utils.LanguageUtil
import cn.sinata.xldutils.utils.myToast
import cn.sinata.xldutils.utils.optDouble
import cn.sinata.xldutils.utils.optInt
@@ -93,7 +93,7 @@
    override fun initView() {
        title = getString(R.string.邮寄快件指南)
        if (SPUtils.instance().getString("language") == Const.Language.FRENCH) { //解决法文标题过长问题
        if (LanguageUtil.getLanguage() == Const.Language.FRENCH) { //解决法文标题过长问题
            titleBar.titleView.setTextSize(TypedValue.COMPLEX_UNIT_SP, 12f)
        }
        PayUtil.addPayListener(this)
app/src/main/java/com/igo/user/ui/mine/CommitGoodsActivity.kt
@@ -6,7 +6,7 @@
import android.widget.EditText
import android.widget.TextView
import androidx.core.os.bundleOf
import cn.sinata.xldutils.utils.SPUtils
import cn.sinata.xldutils.utils.LanguageUtil
import cn.sinata.xldutils.utils.isValidPhone
import cn.sinata.xldutils.utils.myToast
import com.igo.user.R
@@ -53,7 +53,7 @@
            else{
                val strings = arrayListOf<String>()
                val dialog = SingleWheelDialog()
                val language = SPUtils.instance().getString("language")
                val language = LanguageUtil.getLanguage()
                strings.addAll(province.map { if (language == Const.Language.ENGLISH) it.englishName else if (language == Const.Language.FRENCH) it.frenchName else it.chineseName })
                dialog.arguments = bundleOf("data" to strings,"title" to getString(R.string.选择地区))
                dialog.setCallback(object :StringCallback{
@@ -133,7 +133,7 @@
            province.clear()
            province.addAll(data ?: arrayListOf())
            val strings = arrayListOf<String>()
            val language = SPUtils.instance().getString("language")
            val language = LanguageUtil.getLanguage()
            strings.addAll(province.map { if (language == Const.Language.ENGLISH) it.englishName else if (language == Const.Language.FRENCH) it.frenchName else it.chineseName })
            val dialog = SingleWheelDialog()
            dialog.arguments = bundleOf("data" to strings, "title" to getString(R.string.选择地区))
@@ -151,7 +151,7 @@
        et_name.filters = arrayOf(RealNameInputFilter())
        et_city.filters = arrayOf(RealNameInputFilter())
        et_district.filters = arrayOf(RealNameInputFilter())
        val language = SPUtils.instance().getString("language")
        val language = LanguageUtil.getLanguage()
        et_name.setTextSize(TypedValue.COMPLEX_UNIT_SP,if (language == Const.Language.CHINESE) 14f else 11f)
        et_phone.setTextSize(TypedValue.COMPLEX_UNIT_SP,if (language == Const.Language.CHINESE) 14f else 11f)
    }
app/src/main/java/com/igo/user/ui/mine/LanguageActivity.kt
@@ -3,7 +3,6 @@
import android.widget.TextView
import androidx.core.os.bundleOf
import cn.sinata.xldutils.utils.LanguageUtil
import cn.sinata.xldutils.utils.SPUtils
import com.igo.user.IGoApplication
import com.igo.user.R
import com.igo.user.dialog.TipDialog
@@ -37,8 +36,7 @@
        tipDialog.arguments = bundleOf("msg" to getString(R.string.确定切换语言吗))
        tipDialog.setCallback(object :TipDialog.OnClickCallback{
            override fun onOk() {
                SPUtils.instance().put("language",language).apply()
                LanguageUtil.changeAppLanguage(this@LanguageActivity,language,"")
                LanguageUtil.saveLanguage(this@LanguageActivity,language)
                IGoApplication.appContext?.reLaunch()
            }
app/src/main/java/com/igo/user/ui/mine/ShareAppActivity.kt
@@ -6,6 +6,7 @@
import android.webkit.WebViewClient
import android.widget.ImageView
import android.widget.TextView
import cn.sinata.xldutils.utils.LanguageUtil
import cn.sinata.xldutils.utils.SPUtils
import cn.sinata.xldutils.utils.optString
import com.igo.user.R
@@ -35,7 +36,7 @@
            val shareDialog = ShareDialog()
            shareDialog.setCallback(object : ShareDialog.Callback {
                override fun onOk(way: Int) {
                    val language = SPUtils.instance().getString("language")
                    val language = LanguageUtil.getLanguage()
                    val languageP = if (language == Const.Language.CHINESE) 1 else if (language == Const.Language.ENGLISH) 2 else 3
                    val url = String.format(
                        Apis.SHARE_URL,
@@ -110,7 +111,7 @@
                webView.loadData(it.optString("content"), "text/html; charset=utf-8", "utf-8")
            }
        }
        val language = SPUtils.instance().getString("language")
        val language = LanguageUtil.getLanguage()
        iv_bg.imageResource = when (language) {
            Const.Language.CHINESE -> R.mipmap.share_bg
            Const.Language.FRENCH -> R.mipmap.share_bg_fr
app/src/main/java/com/igo/user/ui/mine/UserInfoActivity.kt
@@ -6,10 +6,8 @@
import android.util.Log
import android.widget.TextView
import androidx.core.os.bundleOf
import cn.sinata.xldutils.activity.SelectPhotoDialog
import cn.sinata.xldutils.utils.SPUtils
import cn.sinata.xldutils.utils.LanguageUtil
import com.facebook.drawee.view.SimpleDraweeView
import com.google.android.datatransport.cct.internal.LogEvent
import com.igo.user.R
import com.igo.user.dialog.ChooseBirthDialog
import com.igo.user.dialog.ChooseBirthEnglishDialog
@@ -77,7 +75,7 @@
            singleWheelDialog.show(supportFragmentManager, "sex")
        }
        tv_birth.setOnClickListener {
            val language = SPUtils.instance().getString("language")
            val language = LanguageUtil.getLanguage()
            if (language == Const.Language.ENGLISH || language == Const.Language.FRENCH) {
                val chooseBirthDialog = ChooseBirthEnglishDialog()
                chooseBirthDialog.setCallback(object : ChooseBirthEnglishDialog.Callback {
app/src/main/java/com/igo/user/ui/mine/adapter/MyCouponAdapter.kt
@@ -6,7 +6,7 @@
import cn.sinata.xldutils.adapter.HFRecyclerAdapter
import cn.sinata.xldutils.adapter.util.ViewHolder
import cn.sinata.xldutils.invisible
import cn.sinata.xldutils.utils.SPUtils
import cn.sinata.xldutils.utils.LanguageUtil
import cn.sinata.xldutils.visible
import com.daimajia.swipe.SwipeLayout
import com.igo.user.R
@@ -39,7 +39,7 @@
    }
    fun getUsedRes():Int{
        val language = SPUtils.instance().getString("language")
        val language = LanguageUtil.getLanguage()
        return when(language){
            Const.Language.CHINESE-> R.mipmap.used
            Const.Language.FRENCH->R.mipmap.used_f
@@ -48,7 +48,7 @@
    }
    fun getExpiredRes():Int{
        val language = SPUtils.instance().getString("language")
        val language = LanguageUtil.getLanguage()
        return when(language){
            Const.Language.CHINESE-> R.mipmap.passd
            Const.Language.FRENCH->R.mipmap.passd_f
app/src/main/java/com/igo/user/ui/mine/adapter/TripOrderAdapter.kt
@@ -6,7 +6,7 @@
import cn.sinata.xldutils.adapter.HFRecyclerAdapter
import cn.sinata.xldutils.adapter.util.ViewHolder
import cn.sinata.xldutils.gone
import cn.sinata.xldutils.utils.SPUtils
import cn.sinata.xldutils.utils.LanguageUtil
import cn.sinata.xldutils.visible
import com.igo.user.R
import com.igo.user.network.entity.Order
@@ -32,7 +32,7 @@
        if (data.isFrozen == 2){
            clMain.alpha = 0.5f
            frozen.visible()
            val language = SPUtils.instance().getString("language")
            val language = LanguageUtil.getLanguage()
            val ic = when(language){
                Const.Language.ENGLISH->R.mipmap.yidongjie_e
                Const.Language.CHINESE->R.mipmap.yidongjie
app/src/main/java/com/igo/user/ui/trip/ChoosePositionActivity.kt
@@ -12,7 +12,7 @@
import cn.sinata.xldutils.gone
import cn.sinata.xldutils.rxutils.ResultException
import cn.sinata.xldutils.sysErr
import cn.sinata.xldutils.utils.SPUtils
import cn.sinata.xldutils.utils.LanguageUtil
import cn.sinata.xldutils.view.SwipeRefreshRecyclerLayout
import cn.sinata.xldutils.visible
import com.igo.user.IGoApplication
@@ -127,7 +127,7 @@
        lv_position.setMode(SwipeRefreshRecyclerLayout.Mode.None)
        lv_position.setLayoutManager(LinearLayoutManager(this, LinearLayoutManager.VERTICAL,false))
        title = if (isLogistics) getString(if (isStart) R.string.设置领取点 else R.string.设置目的地) else if(isModify) getString(R.string.设置目的地) else if(isStart){
            if (SPUtils.instance().getString("language") == Const.Language.FRENCH){ //解决法文标题过长问题
            if (LanguageUtil.getLanguage() == Const.Language.FRENCH){ //解决法文标题过长问题
                titleBar.titleView.setTextSize(TypedValue.COMPLEX_UNIT_SP,12f)
            }
            getString(R.string.设置上车点)
app/src/main/java/com/igo/user/ui/trip/MapTripFragment.kt
@@ -27,7 +27,7 @@
import cn.sinata.xldutils.fragment.BaseFragment
import cn.sinata.xldutils.gone
import cn.sinata.xldutils.invisible
import cn.sinata.xldutils.utils.SPUtils
import cn.sinata.xldutils.utils.LanguageUtil
import cn.sinata.xldutils.utils.SpanBuilder
import cn.sinata.xldutils.utils.myToast
import cn.sinata.xldutils.utils.optBoolean
@@ -173,7 +173,7 @@
    //是否循环刷新
    private var hadLoopRefresh = false
    override fun onFirstVisibleToUser() {
        val language = SPUtils.instance().getString("language")
        val language = LanguageUtil.getLanguage()
        tv_110.setCompoundDrawablesRelativeWithIntrinsicBounds(
            0,
            if (language == Const.Language.CHINESE) R.mipmap.icon_110 else R.mipmap.icon_191,
@@ -1114,7 +1114,7 @@
    private fun setMarker(latLon: LatLng, content: String = "") {
        val options = MarkerOptions()
        options.position(latLon)
        val language = SPUtils.instance().getString("language")
        val language = LanguageUtil.getLanguage()
        if (content.isNotEmpty()) {
            val ic = when (language) {
                Const.Language.ENGLISH -> R.mipmap.end_point_e
app/src/main/java/com/igo/user/ui/trip/OrderDetailActivity.kt
@@ -20,6 +20,7 @@
import cn.sinata.xldutils.hide
import cn.sinata.xldutils.invisible
import cn.sinata.xldutils.toBrowser
import cn.sinata.xldutils.utils.LanguageUtil
import cn.sinata.xldutils.utils.SPUtils
import cn.sinata.xldutils.utils.SpanBuilder
import cn.sinata.xldutils.utils.myToast
@@ -296,7 +297,7 @@
                }
                if (order!!.isFrozen == 2) {
                    tv_frozen.visible()
                    val language = SPUtils.instance().getString("language")
                    val language = LanguageUtil.getLanguage()
                    val ic = when (language) {
                        Const.Language.ENGLISH -> R.mipmap.yidongjie_e
                        Const.Language.CHINESE -> R.mipmap.yidongjie
@@ -334,7 +335,7 @@
                            val shareDialog = ShareDialog()
                            shareDialog.setCallback(object : ShareDialog.Callback {
                                override fun onOk(way: Int) { //0:wx 1:qq 2:msg
                                    val language = SPUtils.instance().getString("language")
                                    val language = LanguageUtil.getLanguage()
                                    val languageP =
                                        if (language == Const.Language.CHINESE) 1 else if (language == Const.Language.ENGLISH) 2 else 3
                                    val url = String.format(
app/src/main/java/com/igo/user/ui/trip/OrderDetailWithMapActivity.kt
@@ -1,14 +1,16 @@
package com.igo.user.ui.trip
//import com.share.utils.ShareUtils
//import com.umeng.socialize.UMShareListener
//import com.umeng.socialize.bean.SHARE_MEDIA
import android.app.Activity
import android.graphics.Color
import android.view.View
import android.widget.CheckBox
import android.widget.TextView
import androidx.core.os.bundleOf
import cn.sinata.xldutils.gone
import cn.sinata.xldutils.invisible
import cn.sinata.xldutils.toBrowser
import cn.sinata.xldutils.utils.LanguageUtil
import cn.sinata.xldutils.utils.SPUtils
import cn.sinata.xldutils.utils.myToast
import cn.sinata.xldutils.utils.optDouble
@@ -39,9 +41,6 @@
import com.igo.user.utils.showMoney
import com.igo.user.views.CenterFlowLayout
import com.igo.user.views.RatingBar
//import com.share.utils.ShareUtils
//import com.umeng.socialize.UMShareListener
//import com.umeng.socialize.bean.SHARE_MEDIA
import org.jetbrains.anko.find
import org.jetbrains.anko.sdk27.coroutines.onClick
import org.jetbrains.anko.startActivity
@@ -249,7 +248,7 @@
     * @param isStart true:起点标记 false:终点标记
     */
    private fun setMarker(latLon: LatLng, isStart:Boolean = true) {
        val language = SPUtils.instance().getString("language")
        val language = LanguageUtil.getLanguage()
        if (isStart){
            val ic = when(language){
@@ -289,7 +288,7 @@
                            val shareDialog = ShareDialog()
                            shareDialog.setCallback(object :ShareDialog.Callback{
                                override fun onOk(way: Int) { //0:wx 1:qq 2:msg
                                    val language = SPUtils.instance().getString("language")
                                    val language = LanguageUtil.getLanguage()
                                    val languageP = if (language == Const.Language.CHINESE) 1 else if (language == Const.Language.ENGLISH) 2 else 3
                                    val url = String.format(Apis.SHARE_URL, languageP, languageP,SPUtils.instance().getInt(Const.User.USER_ID))
                                    if (way == 3)
app/src/main/java/com/igo/user/ui/trip/OrderOtherActivity.kt
@@ -11,7 +11,7 @@
import android.view.View
import android.widget.EditText
import android.widget.TextView
import cn.sinata.xldutils.utils.SPUtils
import cn.sinata.xldutils.utils.LanguageUtil
import cn.sinata.xldutils.utils.myToast
import cn.sinata.xldutils.utils.optString
import com.igo.user.R
@@ -78,7 +78,7 @@
            }
        }
        val language = SPUtils.instance().getString("language")
        val language = LanguageUtil.getLanguage()
        if (language == Const.Language.CHINESE){
            tv_tip.gravity = Gravity.CENTER
            tv_rule.typeface = Typeface.DEFAULT
app/src/main/java/com/igo/user/ui/trip/PriceDetailActivity.kt
@@ -6,7 +6,7 @@
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import cn.sinata.xldutils.gone
import cn.sinata.xldutils.utils.SPUtils
import cn.sinata.xldutils.utils.LanguageUtil
import cn.sinata.xldutils.visible
import com.igo.user.R
import com.igo.user.network.entity.Order
@@ -138,7 +138,7 @@
                val tv_name1 = view1.find<TextView>(R.id.tv_name)
                val tv_price1 = view1.find<TextView>(R.id.tv_price)
                tv_name1.text = getString(R.string.活动折扣)
                val language = SPUtils.instance().getString("language")
                val language = LanguageUtil.getLanguage()
                tv_price1.text = when(language){
                    Const.Language.ENGLISH->"${100-(order.discount*10).toInt()}%"
                    Const.Language.CHINESE->"${order.discount}折"
app/src/main/java/com/igo/user/ui/trip/TripActivity.kt
@@ -27,7 +27,7 @@
import cn.sinata.xldutils.activity.BaseActivity
import cn.sinata.xldutils.callPhone
import cn.sinata.xldutils.gone
import cn.sinata.xldutils.utils.SPUtils
import cn.sinata.xldutils.utils.LanguageUtil
import cn.sinata.xldutils.utils.SpanBuilder
import cn.sinata.xldutils.utils.myToast
import cn.sinata.xldutils.utils.parserTime
@@ -238,7 +238,7 @@
            shareDialog.arguments = bundleOf("isTrip" to true)
            shareDialog.setCallback(object :ShareDialog.Callback{
                override fun onOk(way: Int) {
                    val language = SPUtils.instance().getString("language")
                    val language = LanguageUtil.getLanguage()
                    val languageP = if (language == Const.Language.CHINESE) 1 else if(language == Const.Language.FRENCH) 3 else 2
                    val url = String.format(Apis.TRIP_URL,languageP,id.toString(),type,languageP)
                    if (way == 3)
@@ -921,7 +921,7 @@
     * @param isStart true:起点标记 false:终点标记
     */
    private fun setMarker(latLon: LatLng, content: CharSequence = "", isStart: Boolean = true) {
        val language = SPUtils.instance().getString("language")
        val language = LanguageUtil.getLanguage()
        if (isStart) {
            val ic = when (language) {
                Const.Language.ENGLISH -> R.mipmap.starting_point_e
app/src/main/java/com/igo/user/utils/google/AMapKit.kt
@@ -14,7 +14,7 @@
import android.view.View
import android.widget.Toast
import androidx.core.content.ContextCompat
import cn.sinata.xldutils.utils.SPUtils
import cn.sinata.xldutils.utils.LanguageUtil
import com.google.android.gms.common.api.ApiException
import com.google.android.gms.common.util.CollectionUtils.listOf
import com.google.android.gms.maps.CameraUpdateFactory
@@ -325,7 +325,7 @@
        onClick: (latLngs: MutableList<LatLng>, lineTance: Float, lineTime: Long) -> Unit
    ) {
        //https://maps.googleapis.com/maps/api/directions/json?origin=39.99709957757345,116.31184045225382&destination=39.949158391497214,116.4154639095068&sensor=false&mode=driving
        var language = SPUtils.instance().getString("language")
        var language = LanguageUtil.getLanguage()
        var centerStr = getPointStr(centerPoint ?: arrayListOf())
        var url = "https://maps.googleapis.com/maps/api/directions/json" +
                "?origin=" + start.latitude.toString() + "," + start.longitude.toString() +
@@ -362,7 +362,7 @@
        onClick: (latLngs: MutableList<LatLng>, lineTance: Float, lineTime: Long) -> Unit
    ) {
        //https://maps.googleapis.com/maps/api/directions/json?origin=39.99709957757345,116.31184045225382&destination=39.949158391497214,116.4154639095068&sensor=false&mode=driving
        var language = SPUtils.instance().getString("language")
        var language = LanguageUtil.getLanguage()
        val client: OkHttpClient = OkHttpClient().newBuilder()
            .build()
        val mediaType: MediaType = MediaType.parse("text/plain")!!
@@ -458,7 +458,7 @@
        lng: Double,
       function: ( List<GoogleNearBean2.ResultsBean>) -> Unit
    ) {
        var language = SPUtils.instance().getString("language")
        var language = LanguageUtil.getLanguage()
        var url = "https://maps.googleapis.com/maps/api/place/nearbysearch/json" +
                "?location="+ lat.toString()+","+lng.toString() +
                "&radius=1500" +
@@ -480,7 +480,7 @@
     */
    fun searchSite(context: Context, content: String?, cityName: String, function: (List<AutocompletePrediction>) -> Unit) {
        val placesClient = Places.createClient(context)
        var language = SPUtils.instance().getString("language")
        var language = LanguageUtil.getLanguage()
        val token = AutocompleteSessionToken.newInstance()
//        val bounds = RectangularBounds.newInstance(
//            LatLng(-33.880490, 151.184363), LatLng(-33.858754, 151.229596))
@@ -525,7 +525,7 @@
     * 逆地址编码
     */
    fun getAddress(context: Context,lat:Double,lon:Double,function:(String)->Unit) {
        var language = SPUtils.instance().getString("language")
        var language = LanguageUtil.getLanguage()
        var url = "https://maps.googleapis.com/maps/api/geocode/json" +
                "?latlng="+ lat.toString() +","+lon.toString() +
                "&language="+language+
@@ -539,7 +539,7 @@
    }
    fun getAddressName(context: Context,lat:Double,lon:Double,function:(String)->Unit) {
        var language = SPUtils.instance().getString("language")
        var language = LanguageUtil.getLanguage()
        var url = "https://maps.googleapis.com/maps/api/geocode/json" +
                "?latlng="+ lat.toString() +","+lon.toString() +
                "&language="+language+
app/src/main/res/layout/activity_login.xml
@@ -213,7 +213,7 @@
        android:layout_height="1px"
        android:background="@color/dividing_line_color"
        app:layout_constraintEnd_toEndOf="@id/et_phone"
        app:layout_constraintStart_toStartOf="@id/et_phone"
        app:layout_constraintStart_toStartOf="@id/tv_pwd"
        app:layout_constraintTop_toBottomOf="@id/barrier" />
    <CheckBox
xldutils-kotlin/src/main/java/cn/sinata/xldutils/activity/BaseActivity.kt
@@ -17,13 +17,11 @@
import cn.sinata.xldutils.R
import cn.sinata.xldutils.rxutils.RequestHelper
import cn.sinata.xldutils.utils.LanguageUtil
import cn.sinata.xldutils.utils.SPUtils
import cn.sinata.xldutils.utils.myToast
import cn.sinata.xldutils.widget.ProgressDialog
import io.reactivex.disposables.CompositeDisposable
import io.reactivex.disposables.Disposable
import org.jetbrains.anko.AnkoLogger
import kotlin.system.exitProcess
/**
 * 基础activity,包含设置默认强制竖屏显示,广播方式实现关闭全部继承自该activity,并注册了关闭广播的子类
@@ -47,7 +45,7 @@
    }
    override fun attachBaseContext(newBase: Context?) {
        val language = SPUtils.instance().getString("language")
        val language = LanguageUtil.getLanguage()
        super.attachBaseContext(LanguageUtil.attachBaseContext(newBase, language, ""))
    }
xldutils-kotlin/src/main/java/cn/sinata/xldutils/rxutils/Error.kt
@@ -1,24 +1,24 @@
package cn.sinata.xldutils.rxutils
import cn.sinata.xldutils.utils.SPUtils
import cn.sinata.xldutils.utils.LanguageUtil
/**
 *
 */
object Error {
    val REQUEST_ERROR = when(SPUtils.instance().getString("language")){
    val REQUEST_ERROR = when(LanguageUtil.getLanguage()){
        "ch","zh"->"请求出错!"
        "fr"->"Erreur de demande"
        else->"Request Error"
    }
    val PARSER_ERROR = "Data Parse Error!"
    val NET_ERROR = when(SPUtils.instance().getString("language")){
    val NET_ERROR = when(LanguageUtil.getLanguage()){
        "ch","zh"->"网络异常,请检查您的网络状态!"
        "fr"->"Le réseau est anormal, veuillez vérifier l\'état de votre réseau!"
        else->"The network is abnormal, please check your network status!"
    }
    val SERVER_ERROR = when(SPUtils.instance().getString("language")){
    val SERVER_ERROR = when(LanguageUtil.getLanguage()){
        "ch","zh"->"服务器异常,请稍后再试"
        "fr"->"Erreur de serveur, veuillez réessayer plus tard"
        else->"Server error, please retry later"
xldutils-kotlin/src/main/java/cn/sinata/xldutils/rxutils/ResultCommonSubscriber.kt
@@ -1,7 +1,7 @@
package cn.sinata.xldutils.rxutils
import cn.sinata.xldutils.sysErr
import cn.sinata.xldutils.utils.SPUtils
import cn.sinata.xldutils.utils.LanguageUtil
import com.google.gson.JsonSyntaxException
import retrofit2.HttpException
import java.net.ConnectException
@@ -44,7 +44,7 @@
     */
    open fun onError(code: Int, msg: String) {
        if (msg == "TOKEN_INVALID"){
            _showToast(when(SPUtils.instance().getString("language")){
            _showToast(when(LanguageUtil.getLanguage()){
                "ch","zh"->"您的身份已过期,请重新登录"
                "fr"->"Votre identité a expiré, veuillez vous reconnecter"
                else->"Your identity has expired, please log in again"
xldutils-kotlin/src/main/java/cn/sinata/xldutils/utils/LanguageUtil.java
@@ -6,11 +6,27 @@
import android.os.Build;
import android.os.LocaleList;
import android.text.TextUtils;
import android.util.DisplayMetrics;
import java.util.Locale;
public class LanguageUtil {
    private static String defaultLanguage = "";
    public static void setDefaultLanguage(String language) {
        defaultLanguage = language;
    }
    //获取语言
    public static String getLanguage() {
        return SPUtils.Companion.instance().getString("language", defaultLanguage);
    }
    //设置语言
    public static void saveLanguage(Context context, String language) {
        SPUtils.Companion.instance().put("language", language).apply();
        LanguageUtil.changeAppLanguage(context, language, "");
    }
    private static Locale getLocaleByLanguage(String language) {
        if (TextUtils.isEmpty(language)) {
            return Locale.FRENCH;
@@ -46,7 +62,7 @@
     * @param context
     * @param newLanguage 想要切换的语言类型 比如 Const.Language.ENGLISH ,"zh"
     */
    public static void changeAppLanguage(Context context, String newLanguage, String country) {
    private static void changeAppLanguage(Context context, String newLanguage, String country) {
        if (TextUtils.isEmpty(newLanguage)) {
            return;
        }
@@ -64,32 +80,5 @@
            configuration.locale = locale;
            resources.updateConfiguration(configuration, resources.getDisplayMetrics());
        }
    }
    /**
     * 如果是7.0以下,我们需要调用changeAppLanguage方法,
     * 如果是7.0及以上系统,直接把我们想要切换的语言类型保存在SharedPreferences中,然后重新启动MainActivity即可
     */
    public static void setLanguage(String language, String country, Context appContext) {
        if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N) {
            changeAppLanguage(appContext, language, country);
        }
        SPUtils.Companion.instance().put("language", language);
        SPUtils.Companion.instance().put("country", country);
    }
    public static void set(boolean isEnglish, Context context) {
        Configuration configuration = context.getResources().getConfiguration();
        DisplayMetrics displayMetrics = context.getResources().getDisplayMetrics();
        if (isEnglish) {
            //设置英文
            configuration.locale = Locale.ENGLISH;
        } else {
            //设置中文
            configuration.locale = Locale.SIMPLIFIED_CHINESE;
        }
        //更新配置
        context.getResources().updateConfiguration(configuration, displayMetrics);
    }
}