1.Icon improvement

2.Compatibility fix, for mods with input box
3.Mod list's auto translate support
4.Minor fix and bug fix
This commit is contained in:
ZaneYork 2020-03-19 18:22:08 +08:00
parent c32e8994c8
commit 8276ed8843
59 changed files with 1129 additions and 278 deletions

View File

@ -1,5 +1,6 @@
apply plugin: 'com.android.application'
apply plugin: "androidx.navigation.safeargs"
apply plugin: 'org.greenrobot.greendao'
android {
compileSdkVersion 28
@ -9,8 +10,8 @@ android {
applicationId "com.zane.smapiinstaller"
minSdkVersion 19
targetSdkVersion 28
versionCode 14
versionName "1.3.1"
versionCode 15
versionName "1.3.2"
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
multiDexEnabled true
@ -35,6 +36,10 @@ android {
}
}
greendao {
schemaVersion 1 //
}
dependencies {
implementation fileTree(dir: 'libs', include: ['*.jar'])
@ -70,6 +75,7 @@ dependencies {
implementation 'com.github.didikee:AndroidDonate:0.1.0'
implementation 'com.hjq:language:3.0'
implementation 'org.greenrobot:greendao:3.2.2'
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test.ext:junit:1.1.1'

View File

@ -143,3 +143,16 @@
-dontwarn org.spongycastle.x509.util.LDAPStoreHelper
-keep class org.slf4j.**
-keep class com.hjq.language.** {*;}
-keepclassmembers class * extends org.greenrobot.greendao.AbstractDao {
public static java.lang.String TABLENAME;
}
-keep class **$Properties { *; }
# If you DO use SQLCipher:
-keep class org.greenrobot.greendao.database.SqlCipherEncryptedHelper { *; }
# If you do NOT use SQLCipher:
-dontwarn net.sqlcipher.database.**
# If you do NOT use RxJava:
-dontwarn rx.**

View File

@ -15,11 +15,17 @@ import com.hjq.language.LanguagesManager;
import com.microsoft.appcenter.AppCenter;
import com.microsoft.appcenter.analytics.Analytics;
import com.microsoft.appcenter.crashes.Crashes;
import com.zane.smapiinstaller.constant.AppConfigKey;
import com.zane.smapiinstaller.constant.Constants;
import com.zane.smapiinstaller.entity.AppConfig;
import com.zane.smapiinstaller.entity.AppConfigDao;
import com.zane.smapiinstaller.entity.DaoSession;
import com.zane.smapiinstaller.entity.FrameworkConfig;
import com.zane.smapiinstaller.logic.CommonLogic;
import com.zane.smapiinstaller.logic.ConfigManager;
import com.zane.smapiinstaller.logic.GameLauncher;
import com.zane.smapiinstaller.utils.DialogUtils;
import com.zane.smapiinstaller.utils.TranslateUtil;
import org.apache.commons.lang3.StringUtils;
@ -169,6 +175,21 @@ public class MainActivity extends AppCompatActivity {
case 3:
restart = LanguagesManager.setAppLanguage(this, Locale.TRADITIONAL_CHINESE);
break;
case 4:
restart = LanguagesManager.setAppLanguage(this, Locale.KOREA);
break;
case 5:
restart = LanguagesManager.setAppLanguage(this, new Locale("th", ""));
break;
case 6:
restart = LanguagesManager.setAppLanguage(this, new Locale("es", ""));
break;
case 7:
restart = LanguagesManager.setAppLanguage(this, Locale.FRENCH);
break;
case 8:
restart = LanguagesManager.setAppLanguage(this, new Locale("pt", ""));
break;
default:
return;
}
@ -180,6 +201,33 @@ public class MainActivity extends AppCompatActivity {
}
}).show());
return true;
case R.id.settings_translation_service:
DialogUtils.setCurrentDialog(new MaterialDialog.Builder(this).title(R.string.settings_translation_service).items(R.array.translators).itemsCallback((dialog, itemView, position, text) -> {
DaoSession daoSession = ((MainApplication)this.getApplication()).getDaoSession();
AppConfigDao appConfigDao = daoSession.getAppConfigDao();
AppConfig activeTranslator = appConfigDao.queryBuilder().where(AppConfigDao.Properties.Name.eq(AppConfigKey.ACTIVE_TRANSLATOR)).build().unique();
switch (position) {
case 0:
if(activeTranslator != null)
appConfigDao.delete(activeTranslator);
break;
case 1:
if(activeTranslator == null)
activeTranslator = new AppConfig(null, AppConfigKey.ACTIVE_TRANSLATOR, TranslateUtil.GOOGLE);
else
activeTranslator.setValue(TranslateUtil.GOOGLE);
appConfigDao.insertOrReplace(activeTranslator);
break;
case 2:
if(activeTranslator == null)
activeTranslator = new AppConfig(null, AppConfigKey.ACTIVE_TRANSLATOR, TranslateUtil.YOU_DAO);
else
activeTranslator.setValue(TranslateUtil.YOU_DAO);
appConfigDao.insertOrReplace(activeTranslator);
break;
}
}).show());
return true;
default:
return super.onOptionsItemSelected(item);
}

View File

@ -5,11 +5,19 @@ import android.content.Context;
import com.hjq.language.LanguagesManager;
import com.lzy.okgo.OkGo;
import com.zane.smapiinstaller.entity.DaoMaster;
import com.zane.smapiinstaller.entity.DaoSession;
import com.zane.smapiinstaller.utils.DbOpenHelper;
import com.zane.smapiinstaller.utils.GzipRequestInterceptor;
import org.greenrobot.greendao.database.Database;
import lombok.Getter;
import okhttp3.OkHttpClient;
@Getter
public class MainApplication extends Application {
private DaoSession daoSession;
@Override
public void onCreate() {
super.onCreate();
@ -18,6 +26,10 @@ public class MainApplication extends Application {
.build();
OkGo.getInstance().setOkHttpClient(okHttpClient).init(this);
LanguagesManager.init(this);
// note: DevOpenHelper is for dev only, use a OpenHelper subclass instead
DbOpenHelper helper = new DbOpenHelper(this, "installer-db");
Database db = helper.getWritableDb();
daoSession = new DaoMaster(db).newSession();
}
@Override

View File

@ -0,0 +1,5 @@
package com.zane.smapiinstaller.constant;
public class AppConfigKey {
public static final String ACTIVE_TRANSLATOR = "ActiveTranslator";
}

View File

@ -33,4 +33,14 @@ public class Constants {
* AppCenter秘钥
*/
public static final String APP_CENTER_SECRET = "cb44e94a-7b2f-431e-9ad9-48013ec8c208";
/**
* 有道翻译服务
*/
public static final String TRANSLATE_SERVICE_URL_YOUDAO = "http://fanyi.youdao.com/translate?&doctype=json&type=AUTO&i=%s";
/**
* Google翻译服务
*/
public static final String TRANSLATE_SERVICE_URL_GOOGLE = "http://translate.google.cn/translate_a/single?client=gtx&dt=t&dj=1&ie=UTF-8&sl=auto&tl=%s&q=%s";
}

View File

@ -0,0 +1,41 @@
package com.zane.smapiinstaller.entity;
import org.greenrobot.greendao.annotation.Entity;
import org.greenrobot.greendao.annotation.Id;
import org.greenrobot.greendao.annotation.Unique;
import org.greenrobot.greendao.annotation.Generated;
@Entity
public class AppConfig {
@Id(autoincrement = true) private Long id;
@Unique
private String name;
private String value;
@Generated(hash = 1859776450)
public AppConfig(Long id, String name, String value) {
this.id = id;
this.name = name;
this.value = value;
}
@Generated(hash = 136961441)
public AppConfig() {
}
public Long getId() {
return this.id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
public String getValue() {
return this.value;
}
public void setValue(String value) {
this.value = value;
}
}

View File

@ -0,0 +1,19 @@
package com.zane.smapiinstaller.entity;
import java.util.List;
import lombok.Data;
@Data
public class GoogleTranslationDto {
private List<Entry> sentences;
private String src;
private double confidence;
@Data
public static class Entry {
private String trans;
private String orig;
private int backend;
}
}

View File

@ -46,4 +46,9 @@ public class ModManifestEntry {
* 是否必须依赖
*/
private Boolean IsRequired;
/*
* 翻译后的Description
*/
private transient String translatedDescription;
}

View File

@ -0,0 +1,66 @@
package com.zane.smapiinstaller.entity;
import org.greenrobot.greendao.annotation.Entity;
import org.greenrobot.greendao.annotation.Id;
import org.greenrobot.greendao.annotation.Index;
import org.greenrobot.greendao.annotation.Generated;
@Entity(indexes = {@Index(value = "origin, locale, translator asc", unique = true)})
public class TranslationResult {
@Id(autoincrement = true) private Long id;
private String origin;
private String locale;
private String translator;
private String translation;
private Long createTime;
@Generated(hash = 1588069114)
public TranslationResult(Long id, String origin, String locale,
String translator, String translation, Long createTime) {
this.id = id;
this.origin = origin;
this.locale = locale;
this.translator = translator;
this.translation = translation;
this.createTime = createTime;
}
@Generated(hash = 2000565040)
public TranslationResult() {
}
public Long getId() {
return this.id;
}
public void setId(Long id) {
this.id = id;
}
public String getOrigin() {
return this.origin;
}
public void setOrigin(String origin) {
this.origin = origin;
}
public String getLocale() {
return this.locale;
}
public void setLocale(String locale) {
this.locale = locale;
}
public String getTranslation() {
return this.translation;
}
public void setTranslation(String translation) {
this.translation = translation;
}
public Long getCreateTime() {
return this.createTime;
}
public void setCreateTime(Long createTime) {
this.createTime = createTime;
}
public String getTranslator() {
return this.translator;
}
public void setTranslator(String translator) {
this.translator = translator;
}
}

View File

@ -0,0 +1,20 @@
package com.zane.smapiinstaller.entity;
import java.util.List;
import lombok.Data;
@Data
public class YouDaoTranslationDto {
//{"type":"ZH_CN2EN","errorCode":0,"elapsedTime":2,"translateResult":[[{"src":"云计算","tgt":"Cloud computing"}],[{"src":"前往合肥","tgt":"Travel to hefei"}]]}
private String type;
private int errorCode;
private int elapsedTime;
private List<List<Entry>> translateResult;
@Data
public static class Entry {
private String src;
private String tgt;
}
}

View File

@ -89,9 +89,9 @@ public class ApkPatcher {
}
} catch (PackageManager.NameNotFoundException | IOException e) {
Log.e(TAG, "Extract error", e);
errorMessage.set(e.getLocalizedMessage());
}
}
errorMessage.set(context.getString(R.string.error_game_not_found));
return null;
}
@ -210,7 +210,7 @@ public class ApkPatcher {
if (externalFilesDir != null) {
String signApkPath = externalFilesDir.getAbsolutePath() + "/SMAPI Installer/base_signed.apk";
KeyStore ks = new KeyStoreFileManager.JksKeyStore();
try (InputStream fis = context.getAssets().open("debug.keystore")) {
try (InputStream fis = context.getAssets().open("debug.keystore.dat")) {
ks.load(fis, PASSWORD.toCharArray());
}
String alias = ks.aliases().nextElement();

View File

@ -16,6 +16,7 @@ import com.fasterxml.jackson.core.type.TypeReference;
import com.google.common.base.Predicate;
import com.google.common.collect.Lists;
import com.google.common.io.ByteStreams;
import com.zane.smapiinstaller.MainApplication;
import com.zane.smapiinstaller.entity.ApkFilesManifest;
import com.zane.smapiinstaller.entity.ManifestEntry;
import com.zane.smapiinstaller.utils.FileUtils;
@ -57,6 +58,18 @@ public class CommonLogic {
return null;
}
/**
* 从一个View获取Application
* @param view 控件
* @return Application
*/
public static MainApplication getApplicationFromView(View view) {
Activity activity = getActivityFromView(view);
if(null != activity) {
return (MainApplication) activity.getApplication();
}
return null;
}
/**
* 打开指定URL
@ -97,7 +110,7 @@ public class CommonLogic {
* @return 兼容包列表
*/
public static List<ApkFilesManifest> findAllApkFileManifest(Context context) {
ApkFilesManifest apkFilesManifest = com.zane.smapiinstaller.utils.FileUtils.getAssetJson(context, "apk_files_manifest.json", ApkFilesManifest.class);
ApkFilesManifest apkFilesManifest = FileUtils.getAssetJson(context, "apk_files_manifest.json", ApkFilesManifest.class);
ArrayList<ApkFilesManifest> apkFilesManifests = Lists.newArrayList(apkFilesManifest);
File compatFolder = new File(context.getFilesDir(), "compat");
if (compatFolder.exists()) {

View File

@ -204,6 +204,7 @@ public class ModAssetsManager {
if (list.size() > 0) {
DialogUtils.showConfirmDialog(root, R.string.error,
root.getContext().getString(R.string.duplicate_mod_found, Joiner.on(";").join(list)),
R.string.continue_text, R.string.abort,
((dialog, which) -> {
if (which == DialogAction.POSITIVE) {
returnCallback.accept(true);
@ -261,6 +262,7 @@ public class ModAssetsManager {
if (dependencyErrors.iterator().hasNext()) {
DialogUtils.showConfirmDialog(root, R.string.error,
Joiner.on(";").join(dependencyErrors),
R.string.continue_text, R.string.abort,
((dialog, which) -> {
if (which == DialogAction.POSITIVE) {
returnCallback.accept(true);
@ -313,6 +315,7 @@ public class ModAssetsManager {
if (dependencyErrors.iterator().hasNext()) {
DialogUtils.showConfirmDialog(root, R.string.error,
Joiner.on(";").join(dependencyErrors),
R.string.continue_text, R.string.abort,
((dialog, which) -> {
if (which == DialogAction.POSITIVE) {
returnCallback.accept(true);

View File

@ -45,7 +45,7 @@ public class AboutFragment extends Fragment {
}
catch (ActivityNotFoundException ex)
{
this.OpenPlayStore("https://play.google.com/store/apps/details?id=" + this.getActivity().getPackageName());
CommonLogic.openUrl(this.getContext(), "https://play.google.com/store/apps/details?id=" + this.getActivity().getPackageName());
}
}

View File

@ -29,6 +29,10 @@ public class ConfigFragment extends Fragment {
ConfigViewModel configViewModel = new ConfigViewModel(root);
ModManifestAdapter modManifestAdapter = new ModManifestAdapter(configViewModel);
recyclerView.setAdapter(modManifestAdapter);
configViewModel.registerListChangeListener((list) -> {
modManifestAdapter.setList(list);
return true;
});
recyclerView.addItemDecoration(new DividerItemDecoration(recyclerView.getContext(), DividerItemDecoration.VERTICAL));
return root;
}

View File

@ -3,8 +3,24 @@ package com.zane.smapiinstaller.ui.config;
import android.view.View;
import com.google.common.base.Predicate;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.Iterables;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.hjq.language.LanguagesManager;
import com.zane.smapiinstaller.MainApplication;
import com.zane.smapiinstaller.constant.AppConfigKey;
import com.zane.smapiinstaller.entity.AppConfig;
import com.zane.smapiinstaller.entity.AppConfigDao;
import com.zane.smapiinstaller.entity.DaoSession;
import com.zane.smapiinstaller.entity.ModManifestEntry;
import com.zane.smapiinstaller.entity.TranslationResult;
import com.zane.smapiinstaller.entity.TranslationResultDao;
import com.zane.smapiinstaller.logic.CommonLogic;
import com.zane.smapiinstaller.logic.ModAssetsManager;
import com.zane.smapiinstaller.utils.TranslateUtil;
import org.greenrobot.greendao.query.Query;
import java.util.ArrayList;
import java.util.Collections;
@ -12,22 +28,60 @@ import java.util.List;
import androidx.annotation.NonNull;
import androidx.lifecycle.ViewModel;
import androidx.recyclerview.widget.RecyclerView;
class ConfigViewModel extends ViewModel {
@NonNull
private List<ModManifestEntry> modList;
private RecyclerView view;
private List<Predicate<List<ModManifestEntry>>> onChangedListener = new ArrayList<>();
ConfigViewModel(View root) {
this.modList = ModAssetsManager.findAllInstalledMods();
Collections.sort(this.modList, (a, b)-> {
if(a.getContentPackFor() != null && b.getContentPackFor() == null) {
return 1;
MainApplication app = CommonLogic.getApplicationFromView(root);
if (null != app) {
DaoSession daoSession = app.getDaoSession();
AppConfig activeTranslator = daoSession.getAppConfigDao().queryBuilder().where(AppConfigDao.Properties.Name.eq(AppConfigKey.ACTIVE_TRANSLATOR)).build().unique();
if(activeTranslator != null) {
String translator = activeTranslator.getValue();
ArrayList<String> descriptions = Lists.newArrayList(Iterables.filter(Iterables.transform(this.modList, ModManifestEntry::getDescription), item -> item != null));
String language = LanguagesManager.getAppLanguage(app).getLanguage();
Query<TranslationResult> query = daoSession.getTranslationResultDao().queryBuilder().where(
TranslationResultDao.Properties.Origin.in(descriptions),
TranslationResultDao.Properties.Locale.eq(language),
TranslationResultDao.Properties.Translator.eq(translator)
).build();
List<TranslationResult> translationResults = query.list();
ImmutableMap<String, TranslationResult> translateMap = Maps.uniqueIndex(translationResults, TranslationResult::getOrigin);
List<String> untranslatedText = Lists.newArrayList(Iterables.filter(Iterables.transform(modList, mod -> {
assert mod != null;
if (translateMap.containsKey(mod.getDescription())) {
mod.setTranslatedDescription(translateMap.get(mod.getDescription()).getTranslation());
return null;
} else {
return mod.getDescription();
}
}), item -> item != null));
if (untranslatedText.size() > 0) {
TranslateUtil.translateText(untranslatedText, translator, language, (results) -> {
daoSession.getTranslationResultDao().insertOrReplaceInTx(results);
ImmutableMap<String, TranslationResult> map = Maps.uniqueIndex(results, TranslationResult::getOrigin);
for (ModManifestEntry mod : modList) {
if (map.containsKey(mod.getDescription())) {
mod.setTranslatedDescription(map.get(mod.getDescription()).getTranslation());
}
}
for (Predicate<List<ModManifestEntry>> listener : onChangedListener) {
listener.apply(modList);
}
return true;
});
}
}
else if(b.getContentPackFor() != null) {
}
Collections.sort(this.modList, (a, b) -> {
if (a.getContentPackFor() != null && b.getContentPackFor() == null) {
return 1;
} else if (b.getContentPackFor() != null) {
return -1;
}
return a.getName().compareTo(b.getName());
@ -41,7 +95,7 @@ class ConfigViewModel extends ViewModel {
public Integer findFirst(Predicate<ModManifestEntry> predicate) {
for (int i = 0; i < modList.size(); i++) {
if(predicate.apply(modList.get(i))) {
if (predicate.apply(modList.get(i))) {
return i;
}
}
@ -50,8 +104,8 @@ class ConfigViewModel extends ViewModel {
public List<Integer> removeAll(Predicate<ModManifestEntry> predicate) {
List<Integer> deletedId = new ArrayList<>();
for (int i = modList.size() - 1; i >=0 ; i--) {
if(predicate.apply(modList.get(i))) {
for (int i = modList.size() - 1; i >= 0; i--) {
if (predicate.apply(modList.get(i))) {
modList.remove(i);
deletedId.add(i);
}
@ -59,4 +113,12 @@ class ConfigViewModel extends ViewModel {
return deletedId;
}
/**
* 注册列表变化监听器
*
* @param onChanged 回调
*/
public void registerListChangeListener(Predicate<List<ModManifestEntry>> onChanged) {
this.onChangedListener.add(onChanged);
}
}

View File

@ -45,7 +45,7 @@ public class ModManifestAdapter extends RecyclerView.Adapter<ModManifestAdapter.
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
ModManifestEntry mod = model.getModList().get(position);
holder.modName.setText(mod.getName());
holder.modDescription.setText(mod.getDescription());
holder.modDescription.setText(StringUtils.firstNonBlank(mod.getTranslatedDescription(), mod.getDescription()));
holder.setModPath(mod.getAssetPath());
}
@ -54,6 +54,10 @@ public class ModManifestAdapter extends RecyclerView.Adapter<ModManifestAdapter.
return model.getModList().size();
}
public void setList(List<ModManifestEntry> list) {
notifyDataSetChanged();
}
class ViewHolder extends RecyclerView.ViewHolder{
private String modPath;
void setModPath(String modPath) {

View File

@ -0,0 +1,27 @@
package com.zane.smapiinstaller.utils;
import android.content.Context;
import android.database.sqlite.SQLiteDatabase;
import com.zane.smapiinstaller.entity.DaoMaster;
import com.zane.smapiinstaller.entity.TranslationResultDao;
import org.greenrobot.greendao.database.Database;
public class DbOpenHelper extends DaoMaster.OpenHelper {
public DbOpenHelper(Context context, String name) {
super(context, name);
}
public DbOpenHelper(Context context, String name, SQLiteDatabase.CursorFactory factory) {
super(context, name, factory);
}
@Override
public void onUpgrade(Database db, int oldVersion, int newVersion) {
// if (newVersion == 1) {
// TranslationResultDao.dropTable(db, true);
// }
onCreate(db);
}
}

View File

@ -90,9 +90,23 @@ public class DialogUtils {
* @param callback 回调
*/
public static void showConfirmDialog(View view, int title, String message, MaterialDialog.SingleButtonCallback callback) {
showConfirmDialog(view, title, message, R.string.confirm, R.string.cancel, callback);
}
/**
* 显示确认对话框
*
* @param view context容器
* @param title 标题
* @param message 消息
* @param positiveText 确认文本
* @param negativeText 取消文本
* @param callback 回调
*/
public static void showConfirmDialog(View view, int title, String message, int positiveText, int negativeText, MaterialDialog.SingleButtonCallback callback) {
Activity activity = CommonLogic.getActivityFromView(view);
if (activity != null && !activity.isFinishing()) {
activity.runOnUiThread(() -> DialogUtils.setCurrentDialog(new MaterialDialog.Builder(activity).title(title).content(message).positiveText(R.string.confirm).negativeText(R.string.cancel).onAny(callback).show()));
activity.runOnUiThread(() -> DialogUtils.setCurrentDialog(new MaterialDialog.Builder(activity).title(title).content(message).positiveText(positiveText).negativeText(negativeText).onAny(callback).show()));
}
}

View File

@ -9,6 +9,7 @@ import com.google.common.hash.Hashing;
import com.google.common.io.ByteStreams;
import com.google.common.io.CharStreams;
import com.hjq.language.LanguagesManager;
import com.zane.smapiinstaller.MainApplication;
import org.apache.commons.io.input.BOMInputStream;
import org.apache.commons.lang3.StringUtils;

View File

@ -0,0 +1,103 @@
package com.zane.smapiinstaller.utils;
import com.google.common.base.Joiner;
import com.google.common.base.Predicate;
import com.google.common.base.Splitter;
import com.google.common.collect.ImmutableListMultimap;
import com.google.common.collect.Iterables;
import com.google.common.collect.Lists;
import com.google.common.collect.Multimaps;
import com.lzy.okgo.OkGo;
import com.lzy.okgo.callback.StringCallback;
import com.lzy.okgo.model.Response;
import com.zane.smapiinstaller.constant.Constants;
import com.zane.smapiinstaller.entity.GoogleTranslationDto;
import com.zane.smapiinstaller.entity.TranslationResult;
import com.zane.smapiinstaller.entity.YouDaoTranslationDto;
import org.apache.commons.lang3.StringUtils;
import java.util.ArrayList;
import java.util.List;
public class TranslateUtil {
public static final String GOOGLE = "Google";
public static final String YOU_DAO = "YouDao";
public static void translateText(List<String> textList, String translator, String locale, Predicate<List<TranslationResult>> resultCallback) {
if(textList == null || textList.size() == 0)
return;
textList = Lists.newArrayList(Iterables.filter(textList, item -> StringUtils.isNoneBlank(item) && !item.contains("\n")));
if(textList.size() == 0) {
return;
}
String queryText = Joiner.on("%0A").join(textList);
if(queryText.length() > 4096) {
if(textList.size() == 1)
return;
List<String> subListA = textList.subList(0, textList.size() / 2);
translateText(subListA, translator, locale, resultCallback);
List<String> subListB = textList.subList(textList.size() / 2, textList.size());
translateText(subListB, translator, locale, resultCallback);
}
if(StringUtils.equalsIgnoreCase(translator, YOU_DAO)) {
if (!StringUtils.equalsAnyIgnoreCase(locale, "zh")) {
return;
}
OkGo.<String>get(String.format(Constants.TRANSLATE_SERVICE_URL_YOUDAO, queryText)).execute(new StringCallback() {
@Override
public void onSuccess(Response<String> response) {
YouDaoTranslationDto translationDto = JSONUtil.fromJson(response.body(), YouDaoTranslationDto.class);
if (translationDto != null && translationDto.getErrorCode() == 0) {
List<List<YouDaoTranslationDto.Entry>> lists = translationDto.getTranslateResult();
List<TranslationResult> translations = new ArrayList<>(lists.size());
for (List<YouDaoTranslationDto.Entry> list : lists) {
TranslationResult result = new TranslationResult();
result.setOrigin("");
result.setLocale(locale);
result.setTranslation("");
result.setTranslator(translator);
result.setCreateTime(System.currentTimeMillis());
for (YouDaoTranslationDto.Entry entry : list) {
if (entry == null)
continue;
result.setOrigin(result.getOrigin() + entry.getSrc());
result.setTranslation(result.getTranslation() + entry.getTgt());
}
translations.add(result);
}
resultCallback.apply(Lists.newArrayList(translations));
}
}
});
}
else if(StringUtils.equalsIgnoreCase(translator, GOOGLE)) {
OkGo.<String>get(String.format(Constants.TRANSLATE_SERVICE_URL_GOOGLE, locale, queryText)).execute(new StringCallback() {
@Override
public void onSuccess(Response<String> response) {
GoogleTranslationDto translationDto = JSONUtil.fromJson(response.body(), GoogleTranslationDto.class);
if(translationDto != null) {
List<String> sourceText = Splitter.on("%0A").splitToList(queryText);
List<TranslationResult> translations = new ArrayList<>(sourceText.size());
for (String source : sourceText) {
TranslationResult result = new TranslationResult();
result.setOrigin(source);
result.setLocale(locale);
result.setTranslation(source);
result.setTranslator(translator);
result.setCreateTime(System.currentTimeMillis());
for (GoogleTranslationDto.Entry entry: translationDto.getSentences()) {
String orig = StringUtils.strip(entry.getOrig(), "\n");
String trans = StringUtils.strip(entry.getTrans(), "\n");
result.setTranslation(StringUtils.replace(result.getTranslation(), orig, trans));
}
translations.add(result);
}
resultCallback.apply(Lists.newArrayList(translations));
}
}
});
}
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.1 KiB

After

Width:  |  Height:  |  Size: 3.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.1 KiB

After

Width:  |  Height:  |  Size: 3.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

View File

@ -26,7 +26,7 @@
android:layout_height="wrap_content"
android:layout_gravity="bottom|center"
android:layout_margin="@dimen/fab_margin"
app:srcCompat="@android:drawable/ic_menu_send" />
app:srcCompat="@drawable/plane" />
<include layout="@layout/content_main" />

View File

@ -49,11 +49,11 @@
android:id="@+id/button_remove_content"
android:layout_width="32dp"
android:layout_height="32dp"
android:background="@android:drawable/ic_menu_delete" />
android:background="@drawable/trash" />
<Button
android:id="@+id/button_download_content"
android:layout_width="32dp"
android:layout_height="32dp"
android:background="@android:drawable/ic_menu_add" />
android:background="@drawable/add" />
</LinearLayout>
</RelativeLayout>

View File

@ -72,7 +72,7 @@
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:srcCompat="@drawable/ic_menu_share"
app:srcCompat="@drawable/global"
android:contentDescription="@string/icon_desc" />
<Button
android:id="@+id/button_release"
@ -98,7 +98,7 @@
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:srcCompat="@drawable/ic_menu_share"
app:srcCompat="@drawable/global"
android:contentDescription="@string/icon_desc" />
<Button
android:id="@+id/button_gplay"

View File

@ -2,7 +2,6 @@
<androidx.recyclerview.widget.RecyclerView xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/list"
android:name="com.zane.smapiinstaller.ui.download.DownloadContentFragment"
android:layout_width="match_parent"
android:layout_height="match_parent"

View File

@ -34,7 +34,7 @@
app:layout_constraintBottom_toBottomOf="parent"
android:layout_width="32dp"
android:layout_height="32dp"
android:background="@android:drawable/ic_menu_view" />
android:background="@drawable/disable" />
</androidx.constraintlayout.widget.ConstraintLayout>
<TextView
android:id="@+id/text_view_mod_description"
@ -53,11 +53,11 @@
android:id="@+id/button_remove_mod"
android:layout_width="32dp"
android:layout_height="32dp"
android:background="@android:drawable/ic_menu_delete" />
android:background="@drawable/trash" />
<Button
android:id="@+id/button_config_mod"
android:layout_width="32dp"
android:layout_height="32dp"
android:background="@android:drawable/ic_menu_edit" />
android:background="@drawable/edit" />
</LinearLayout>
</RelativeLayout>

View File

@ -13,7 +13,6 @@
android:theme="@style/ThemeOverlay.AppCompat.Dark">
<ImageView
android:id="@+id/imageView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:contentDescription="@string/icon_desc"
@ -28,7 +27,6 @@
android:textAppearance="@style/TextAppearance.AppCompat.Body1" />
<TextView
android:id="@+id/textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/nav_header_subtitle" />

View File

@ -6,23 +6,23 @@
<group android:checkableBehavior="single">
<item
android:id="@+id/nav_install"
android:icon="@android:drawable/ic_menu_add"
android:icon="@drawable/add"
android:title="@string/menu_install" />
<item
android:id="@+id/nav_config"
android:icon="@android:drawable/ic_menu_edit"
android:icon="@drawable/edit"
android:title="@string/menu_config" />
<item
android:id="@+id/nav_download"
android:icon="@android:drawable/ic_dialog_dialer"
android:icon="@drawable/download"
android:title="@string/menu_download" />
<item
android:id="@+id/nav_help"
android:icon="@android:drawable/ic_menu_help"
android:icon="@drawable/help"
android:title="@string/menu_help" />
<item
android:id="@+id/nav_about"
android:icon="@android:drawable/ic_dialog_info"
android:icon="@drawable/about"
android:title="@string/menu_about" />
</group>
</menu>

View File

@ -29,4 +29,9 @@
android:orderInCategory="104"
android:title="@string/settings_set_language"
app:showAsAction="never" />
<item
android:id="@+id/settings_translation_service"
android:orderInCategory="105"
android:title="@string/settings_translation_service"
app:showAsAction="never" />
</menu>

View File

@ -0,0 +1,68 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="abort">Abortar</string>
<string name="android_version_confirm">La versión de su sistema es demasiado antigua, lo que puede hacer que 0Harmony no sea válido. Se recomienda actualizar a Android 6 y superior</string>
<string name="app_name">Instalador SMAPI</string>
<string name="button_compat">Compatibilidad</string>
<string name="button_donation_text">Donar</string>
<string name="button_gplay">Detalles de la tienda de Google</string>
<string name="button_install">Instalar</string>
<string name="button_logs">Registro</string>
<string name="button_nexus">Nexus</string>
<string name="button_qq_group_1_text">QQ group①: 860453392</string>
<string name="button_qq_group_2_text">QQ group②: 1078428449</string>
<string name="button_release">Sitio web oficial</string>
<string name="cancel">Cancelar</string>
<string name="confirm">Confirmar</string>
<string name="confirm_delete_content">¿Estás seguro de que deseas eliminar este contenido?</string>
<string name="confirm_disable_mod">¿Seguro que quieresdeshabilitar este contenido?</string>
<string name="continue_text">Continuar</string>
<string name="download_unpack_success">Descarga e instalación completadas</string>
<string name="downloading">Descargando:%1$dKB /%2$dKB</string>
<string name="duplicate_mod_found">Se han encontrado varias copias de este mod. Elimina los mods duplicados de:% s</string>
<string name="error">Mal</string>
<string name="error_depends_on_mod">%1$s depende de la interfaz de%2$s, instálelo primero</string>
<string name="error_depends_on_mod_version">%1$s depende de la versión%2$s%3$s, actualícela primero</string>
<string name="error_failed_to_create_file">No se pudieron crear los siguientes archivos:%s</string>
<string name="error_failed_to_download">No se puede descargar el recurso de destino</string>
<string name="error_failed_to_repair"> No se puede reparar el entorno SMAPI</string>
<string name="error_game_not_found">Incapaz de encontrar el cuerpo del juego, ¿instalaste Stardew Valley?</string>
<string name="error_illegal_path">Por favor ingrese una ruta válida</string>
<string name="error_no_supported_game_version">La versión del juego no es compatible, actualice laversión o descargue el paquete compatible</string>
<string name="error_smapi_not_installed">SMAPI no está instalado, primero haga clic en el botón instalar</string>
<string name="extracting_package">Extrayendo paquete de instalación</string>
<string name="failed_to_patch_game">No se puede modificar el paquete de instalación, póngase en contacto con el desarrollador para obtener ayuda</string>
<string name="failed_to_process_manifest">No se puede procesar el archivo AndroidManifest.xml</string>
<string name="failed_to_sign_game">No se puede firmar el paquete de instalación, póngase en contacto con el desarrollador para obtener ayuda</string>
<string name="failed_to_unpack_smapi_files">No se puede descomprimir el entorno SMAPI</string>
<string name="info">Pista</string>
<string name="input">Entrar</string>
<string name="input_mods_path">Por favor, introduzca la ruta de Mods</string>
<string name="install_progress_title">Progreso de la instalación</string>
<string name="installing_package">Instalando</string>
<string name="locale_pack">Paquete de idiomas</string>
<string name="menu_about">Acerca de</string>
<string name="menu_config">Configuracion</string>
<string name="menu_config_edit">Editar</string>
<string name="menu_download">Descargar</string>
<string name="menu_help">Ayuda</string>
<string name="menu_install">Instalar</string>
<string name="nav_header_subtitle">ZaneYork@qq.com</string>
<string name="nav_header_title">Instalador SMAPI</string>
<string name="ok">OK</string>
<string name="patching_package">Instalar el parche SMAPI</string>
<string name="progress">Progreso</string>
<string name="save">Guardar</string>
<string name="settings_check_for_updates">Buscar actualizaciones</string>
<string name="settings_developer_mode">Modo desarrollador</string>
<string name="settings_set_language">Idioma</string>
<string name="settings_set_mod_path">Establecer la posición de Mods</string>
<string name="settings_translation_service">Servicios Traducción</string>
<string name="settings_verbose_logging">Registro detallado</string>
<string name="signing_package">Firmando paquete deinstalación</string>
<string name="smapi_game_name">SMAPI Stardew Valley</string>
<string name="smapi_version">Versión SMAPI: 3.3.2.4</string>
<string name="text_install_tip1">Nota: Requiere la versión del juego 1.4.5.138 o superior</string>
<string name="text_install_tip2">El cuerpo del juego debe instalarse durante la actualización o instalación</string>
<string name="unpacking_smapi_files">Desempacando</string>
</resources>

View File

@ -0,0 +1,68 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="abort">Abandonner</string>
<string name="android_version_confirm">La version du système de votre appareil est trop ancienne pour MonoMod, cela peut entraîner un crash du cadre 0Harmony, une mise à jour vers Android M ou plus tard si possible</string>
<string name="app_name">SMAPI Installateur</string>
<string name="button_compat">Compat</string>
<string name="button_donation_text">Faire un don</string>
<string name="button_gplay">Afficher dans le Play Store</string>
<string name="button_install">Installer</string>
<string name="button_logs">Journaux</string>
<string name="button_nexus">Nexus</string>
<string name="button_qq_group_1_text">Groupe QQ 1: 860453392</string>
<string name="button_qq_group_2_text">Groupe QQ 2: 1078428449</string>
<string name="button_release">Libération</string>
<string name="cancel">Annuler</string>
<string name="confirm">Confirmer</string>
<string name="confirm_delete_content">Voulez-vous vraiment le supprimer?</string>
<string name="confirm_disable_mod">Êtes-vous sûr de le désactiver?</string>
<string name="continue_text">Continuez</string>
<string name="download_unpack_success">Télécharger et décompresser le succès</string>
<string name="downloading">Téléchargement:%1$d KB /%2$d KB</string>
<string name="duplicate_mod_found">Copie du mod trouvée, veuillez en supprimer une copie:%s</string>
<string name="error">Erreur</string>
<string name="error_depends_on_mod">Le%1$s dépend de%2$s, veuillez d\'abord l\'installer</string>
<string name="error_depends_on_mod_version">Le%1$s dépend de la version de%2$s %3$s ou ultérieure, veuillez la mettre à jour d\'abord</string>
<string name="error_failed_to_create_file">Impossible de créer le fichier cible:%s</string>
<string name="error_failed_to_download">Impossible de télécharger les ressources cibles</string>
<string name="error_failed_to_repair">Impossible de réparer l\'environnement SMAPI</string>
<string name="error_game_not_found">Impossible de trouver le corps du jeu, avez-vous installé Stardew Valley?</string>
<string name="error_illegal_path">Veuillez saisir un chemin valide</string>
<string name="error_no_supported_game_version">Version du jeu non prise en charge, mettez à niveau ou téléchargez d\'abord le package compat</string>
<string name="error_smapi_not_installed">SMAPI n\'est pas encore installé, appuyez sur installer d\'abord</string>
<string name="extracting_package">Extraction du package d\'installation</string>
<string name="failed_to_patch_game">Impossible de corriger le jeu, veuillez demander de l\'aide au développeur</string>
<string name="failed_to_process_manifest">Impossible de traiter le fichier AndroidManifest.xml</string>
<string name="failed_to_sign_game">Échec de la signature du jeu, veuillez demander de l\'aide au développeur</string>
<string name="failed_to_unpack_smapi_files">Impossible de décompresser les fichiers smapi</string>
<string name="info">Indice</string>
<string name="input">Contribution</string>
<string name="input_mods_path">Veuillez saisir le chemin des mods</string>
<string name="install_progress_title">Installer la progression</string>
<string name="installing_package">L\'installation</string>
<string name="locale_pack">Pack de paramètres régionaux</string>
<string name="menu_about">Sur</string>
<string name="menu_config">Config</string>
<string name="menu_config_edit">Éditer</string>
<string name="menu_download">Télécharger</string>
<string name="menu_help">Aidez-moi</string>
<string name="menu_install">Installer</string>
<string name="nav_header_subtitle">ZaneYork@qq.com</string>
<string name="nav_header_title">SMAPI Installateur</string>
<string name="ok">D\'accord</string>
<string name="patching_package">Patcher SMAPI</string>
<string name="progress">Le progrès</string>
<string name="save">sauvegarder</string>
<string name="settings_check_for_updates">Vérifier les mises à jour</string>
<string name="settings_developer_mode">Mode développeur</string>
<string name="settings_set_language">Langue</string>
<string name="settings_set_mod_path">Définir le chemin des mods</string>
<string name="settings_translation_service">Service de traduction</string>
<string name="settings_verbose_logging">Journalisation détaillée</string>
<string name="signing_package">Signature</string>
<string name="smapi_game_name">SMAPI Stardew Valley</string>
<string name="smapi_version">Version SMAPI: 3.3.2.4</string>
<string name="text_install_tip1">Remarques: La version du jeu 1.4.5.138 ou ultérieure est requise.</string>
<string name="text_install_tip2">Le jeu de base est requis lors de la mise à jour / installation.</string>
<string name="unpacking_smapi_files">Déballage</string>
</resources>

View File

@ -0,0 +1,68 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="abort">중단</string>
<string name="android_version_confirm">시스템 버전이 너무 오래되어 0Harmony가 유효하지 않을 수 있습니다. Android 6 이상으로 업그레이드하는 것이 좋습니다.</string>
<string name="app_name">SMAPI인스톨러</string>
<string name="button_compat">호환성</string>
<string name="button_donation_text">기부</string>
<string name="button_gplay">Google 스토어 세부 정보</string>
<string name="button_install">설치</string>
<string name="button_logs">로그</string>
<string name="button_nexus">Nexus</string>
<string name="button_qq_group_1_text">QQ 그룹 1: 860453392</string>
<string name="button_qq_group_2_text">QQ 그룹 2: 1078428449</string>
<string name="button_release">공식 웹 사이트</string>
<string name="cancel">취소</string>
<string name="confirm">확인</string>
<string name="confirm_delete_content">이 콘텐츠를 삭제 하시겠습니까?</string>
<string name="confirm_disable_mod">이 콘텐츠를 비활성화 하시겠습니까?</string>
<string name="continue_text">계속</string>
<string name="download_unpack_success">다운로드 및 설치 완료</string>
<string name="downloading">다운로드 중: %1$d KB / %2$d KB</string>
<string name="duplicate_mod_found">이 모드의 사본이 여러 개 발견되었습니다 : % s에서 중복 된 모드를 삭제하십시오.</string>
<string name="error">잘못</string>
<string name="error_depends_on_mod">%1$s 는%2$s 프론트 엔드에 따라 다릅니다. 먼저 설치하십시오</string>
<string name="error_depends_on_mod_version">%1$s는 %2$s %3$s 버전에 따라 다릅니다. 먼저 업데이트하십시오</string>
<string name="error_failed_to_create_file">다음 파일을 만들 수 없습니다: %s</string>
<string name="error_failed_to_download">대상 리소스를 다운로드 할 수 없습니다</string>
<string name="error_failed_to_repair">SMAPI 환경을 복구 할 수 없습니다</string>
<string name="error_game_not_found">게임 본체를 찾을 수 없습니다.Stardew Valley을 설치 했습니까?</string>
<string name="error_illegal_path">유효한 경로를 입력하십시오</string>
<string name="error_no_supported_game_version">게임 버전이 지원되지 않습니다. 버전을 업데이트하거나 호환되는 패키지를 다운로드하십시오</string>
<string name="error_smapi_not_installed">SMAPI가 설치되지 않았습니다. 먼저 설치 버튼을 클릭하십시오</string>
<string name="extracting_package">설치 패키지 추출</string>
<string name="failed_to_patch_game">설치 패키지를 수정할 수 없습니다. 개발자에게 문의하십시오.</string>
<string name="failed_to_process_manifest">처리 할 수 ​없습니다</string>
<string name="failed_to_sign_game">설치 패키지에 서명 할 수 없습니다. 개발자에게 문의하십시오.</string>
<string name="failed_to_unpack_smapi_files">SMAPI 환경의 압축을 풀 수 없습니다</string>
<string name="info">힌트</string>
<string name="input">입력</string>
<string name="input_mods_path">Mods경로를 입력하십시오</string>
<string name="install_progress_title">설치 진행</string>
<string name="installing_package">설치 중</string>
<string name="locale_pack">언어 팩</string>
<string name="menu_about">소개</string>
<string name="menu_config">구성</string>
<string name="menu_config_edit">편집</string>
<string name="menu_download">다운로드</string>
<string name="menu_help">도움말</string>
<string name="menu_install">설치</string>
<string name="nav_header_subtitle">ZaneYork@qq.com</string>
<string name="nav_header_title">SMAPI인스톨러</string>
<string name="ok">OK</string>
<string name="patching_package">SMAPI 패치 설치</string>
<string name="progress">진행</string>
<string name="save">저장</string>
<string name="settings_check_for_updates">업데이트 확인</string>
<string name="settings_developer_mode">개발자 모드</string>
<string name="settings_set_language">언어</string>
<string name="settings_set_mod_path">위치mods 설정</string>
<string name="settings_translation_service">번역 서비스</string>
<string name="settings_verbose_logging">자세한 로그</string>
<string name="signing_package">설치 패키지 서명</string>
<string name="smapi_game_name">SMAPI Stardew Valley</string>
<string name="smapi_version">SMAPI버전: 3.3.2.4</string>
<string name="text_install_tip1">참고 : 게임 버전 1.4.5.138 이상이 필요합니다</string>
<string name="text_install_tip2">업데이트 또는 설치 중에 게임 본체를 설치해야합니다</string>
<string name="unpacking_smapi_files">포장 풀기</string>
</resources>

View File

@ -0,0 +1,68 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="abort">Abortar</string>
<string name="android_version_confirm">A versão do sistema do seu dispositivo é muito antiga para o MonoMod, isso pode levar ao travamento da estrutura 0Harmony, atualizar para o Android M ou posterior, se possível</string>
<string name="app_name">Instalador SMAPI</string>
<string name="button_compat">Compat</string>
<string name="button_donation_text">Doação</string>
<string name="button_gplay">Ver na Play Store</string>
<string name="button_install">Instalar</string>
<string name="button_logs">Histórico</string>
<string name="button_nexus">Nexus</string>
<string name="button_qq_group_1_text">Grupo QQ 1: 860453392</string>
<string name="button_qq_group_2_text">Grupo QQ 2: 1078428449</string>
<string name="button_release">Liberação</string>
<string name="cancel">Cancelar</string>
<string name="confirm">Confirme</string>
<string name="confirm_delete_content">Você tem certeza que quer apagar isso?</string>
<string name="confirm_disable_mod">Deseja desativá-lo?</string>
<string name="continue_text">Continuar</string>
<string name="download_unpack_success">Baixe e descompacte o sucesso</string>
<string name="downloading">Baixar: %1$d KB / %2$d KB</string>
<string name="duplicate_mod_found">Encontrada cópia duplicada do mod, exclua duplicada:%s</string>
<string name="error">Erro</string>
<string name="error_depends_on_mod">%1$s depende de%2$s, instale-o primeiro</string>
<string name="error_depends_on_mod_version">%1$s depende da versã %2$s %3$s ou posterior, atualize-a primeiro</string>
<string name="error_failed_to_create_file">Falha ao criar o arquivo de destino:%s</string>
<string name="error_failed_to_download">Falha ao baixar os recursos de destino</string>
<string name="error_failed_to_repair">Falha ao reparar o ambiente SMAPI</string>
<string name="error_game_not_found">Não foi possível encontrar o corpo do jogo, você instalou Stardew Valley?</string>
<string name="error_illegal_path">Por favor insira um caminho válido</string>
<string name="error_no_supported_game_version">Versão do jogo não suportada, atualize ou faça o download do pacote compat primeiro</string>
<string name="error_smapi_not_installed">O SMAPI ainda não foi instalado, pressione instalar primeiro</string>
<string name="extracting_package">Extraindo o pacote de instalação</string>
<string name="failed_to_patch_game">Falha ao corrigir o jogo, solicite ajuda ao desenvolvedor</string>
<string name="failed_to_process_manifest">Falha ao processar o arquivo AndroidManifest.xml</string>
<string name="failed_to_sign_game">Falha ao assinar o jogo, peça ajuda ao desenvolvedor</string>
<string name="failed_to_unpack_smapi_files">Falha ao descompactar arquivos smapi</string>
<string name="info">Sugestão</string>
<string name="input">Entrada</string>
<string name="input_mods_path">Insira o caminho dos mods</string>
<string name="install_progress_title">Progresso da instalação</string>
<string name="installing_package">Instalando</string>
<string name="locale_pack">Pacote de localidade</string>
<string name="menu_about">Sobre</string>
<string name="menu_config">Config</string>
<string name="menu_config_edit">Editar</string>
<string name="menu_download">Baixar</string>
<string name="menu_help">Socorro</string>
<string name="menu_install">Instalar</string>
<string name="nav_header_subtitle">ZaneYork@qq.com</string>
<string name="nav_header_title">Instalador SMAPI</string>
<string name="ok">Está bem</string>
<string name="patching_package">Patch SMAPI</string>
<string name="progress">Progresso</string>
<string name="save">Salve </string>
<string name="settings_check_for_updates">Verificar atualizações</string>
<string name="settings_developer_mode">Modo de desenvolvedor</string>
<string name="settings_set_language">Língua</string>
<string name="settings_set_mod_path">Definir caminho dos mods</string>
<string name="settings_translation_service">Serviço de tradução</string>
<string name="settings_verbose_logging">Log detalhado</string>
<string name="signing_package">Assinatura</string>
<string name="smapi_game_name">SMAPI Stardew Valley</string>
<string name="smapi_version">Versão SMAPI: 3.3.2.4</string>
<string name="text_install_tip1">Notas: É necessária a versão do jogo 1.4.5.138 ou posterior.</string>
<string name="text_install_tip2">O jogo base é necessário ao atualizar / instalar.</string>
<string name="unpacking_smapi_files">Desembalar</string>
</resources>

View File

@ -0,0 +1,68 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="abort">หยุด</string>
<string name="android_version_confirm">รุ่นอุปกรณ์ระบบของคุณเก่าเกินไปสำหรับ MonoMod อาจทำให้เกิดข้อผิดพลาดของเฟรมเวิร์ก 0Harmony อัปเดตเป็น Android M หรือใหม่กว่าหากเป็นไปได้</string>
<string name="app_name">โปรแกรมติดตั้ง SMAPI</string>
<string name="button_compat">ความเข้ากันได้</string>
<string name="button_donation_text">การบริจาค</string>
<string name="button_gplay">ดูใน Play Store</string>
<string name="button_install">ติดตั้ง</string>
<string name="button_logs">ท่อน</string>
<string name="button_nexus">Nexus</string>
<string name="button_qq_group_1_text">กลุ่ม QQ 1: 860453392</string>
<string name="button_qq_group_2_text">กลุ่ม QQ 2: 1078428449</string>
<string name="button_release">ปล่อย</string>
<string name="cancel">ยกเลิก</string>
<string name="confirm">ยืนยัน</string>
<string name="confirm_delete_content">คุณแน่ใจที่จะลบหรือไม่</string>
<string name="confirm_disable_mod">คุณแน่ใจว่าจะปิดการใช้งานหรือไม่</string>
<string name="continue_text">ต่อ</string>
<string name="download_unpack_success">ดาวน์โหลดและเปิดเครื่องสำเร็จ</string>
<string name="downloading">กำลังดาวน์โหลด:%1$d KB / %2$d KB</string>
<string name="duplicate_mod_found">พบสำเนาตัวดัดแปลงที่ซ้ำกันโปรดลบสำเนาที่ซ้ำกัน:%s</string>
<string name="error">ความผิดพลาด</string>
<string name="error_depends_on_mod">%1$sขึ้นอยู่กับ%2$s โปรดติดตั้งก่อน</string>
<string name="error_depends_on_mod_version">%1$s ขึ้นอยู่กับรุ่น%2$s %3$s หรือใหม่กว่าโปรดอัปเดตก่อน</string>
<string name="error_failed_to_create_file">ไม่สามารถสร้างไฟล์เป้าหมาย:%s</string>
<string name="error_failed_to_download">ไม่สามารถดาวน์โหลดทรัพยากรเป้าหมาย</string>
<string name="error_failed_to_repair">ไม่สามารถซ่อมแซมสภาพแวดล้อม SMAPI</string>
<string name="error_game_not_found">ไม่พบร่างของเกมคุณติดตั้ง Stardew Valley หรือไม่</string>
<string name="error_illegal_path">กรุณาใส่เส้นทางที่ถูกต้อง</string>
<string name="error_no_supported_game_version">เวอร์ชั่นเกมไม่รองรับอัปเกรดหรือดาวน์โหลดแพ็คเกจที่รองรับ</string>
<string name="error_smapi_not_installed">SMAPI ยังไม่ได้ติดตั้งให้กดติดตั้งก่อน</string>
<string name="extracting_package">แตกแพ็กเกจการติดตั้ง</string>
<string name="failed_to_patch_game">ไม่สามารถแก้ไขเกมได้โปรดขอความช่วยเหลือจากผู้พัฒนา</string>
<string name="failed_to_process_manifest">ไม่สามารถประมวลผลไฟล์ AndroidManifest.xml</string>
<string name="failed_to_sign_game">ไม่สามารถลงชื่อในเกมได้โปรดขอความช่วยเหลือจากผู้พัฒนา</string>
<string name="failed_to_unpack_smapi_files">ไม่สามารถแยกไฟล์ smapi ได้</string>
<string name="info">ข้อมูล</string>
<string name="input">อินพุต</string>
<string name="input_mods_path">กรุณาใส่เส้นทาง mods</string>
<string name="install_progress_title">ติดตั้งความคืบหน้า</string>
<string name="installing_package">การติดตั้ง</string>
<string name="locale_pack">ชุดภาษา</string>
<string name="menu_about">เกี่ยวกับ</string>
<string name="menu_config">การกำหนดค่า</string>
<string name="menu_config_edit">แก้ไข</string>
<string name="menu_download">ดาวน์โหลด</string>
<string name="menu_help">ช่วยด้วย</string>
<string name="menu_install">ติดตั้ง</string>
<string name="nav_header_subtitle">ZaneYork@qq.com</string>
<string name="nav_header_title">โปรแกรมติดตั้ง SMAPI</string>
<string name="ok">ตกลง</string>
<string name="patching_package">การแปะ SMAPI</string>
<string name="progress">ความคืบหน้า</string>
<string name="save">บันทึก</string>
<string name="settings_check_for_updates">ตรวจสอบสำหรับการอัพเดต</string>
<string name="settings_developer_mode">โหมดนักพัฒนา</string>
<string name="settings_set_language">ภาษา</string>
<string name="settings_set_mod_path">ตั้งค่าเส้นทาง Mods</string>
<string name="settings_translation_service">บริการแปล</string>
<string name="settings_verbose_logging">การบันทึกอย่างละเอียด</string>
<string name="signing_package">การลงชื่อ</string>
<string name="smapi_game_name">SMAPI Stardew Valley</string>
<string name="smapi_version">เวอร์ชั่น SMAPI: 3.3.2.4</string>
<string name="text_install_tip1">หมายเหตุ: จำเป็นต้องใช้เวอร์ชั่นเกม 1.4.5.138 หรือใหม่กว่า</string>
<string name="text_install_tip2">จำเป็นต้องมีเกมพื้นฐานเมื่อทำการอัพเดต / ติดตั้ง</string>
<string name="unpacking_smapi_files">แกะกล่อง</string>
</resources>

View File

@ -11,5 +11,15 @@
<item>English</item>
<item>简体中文</item>
<item>繁體中文</item>
<item>한국어</item>
<item>ไทย</item>
<item>Español</item>
<item>Français</item>
<item>Português</item>
</string-array>
<string-array name="translators">
<item>關閉</item>
<item>谷歌</item>
<item>有道</item>
</string-array>
</resources>

View File

@ -1,67 +1,67 @@
<resources>
<string name="app_name">SMAPI安裝器</string>
<string name="nav_header_title">SMAPI安裝器</string>
<string name="nav_header_subtitle">ZaneYork@qq.com</string>
<string name="action_settings">設置</string>
<string name="menu_install">安裝</string>
<string name="menu_config">配置</string>
<string name="menu_config_edit">編輯</string>
<string name="menu_help">幫助</string>
<string name="button_install">安裝</string>
<string name="extracting_package">正在抽取安裝包</string>
<string name="patching_package">正在安裝SMAPI補丁</string>
<string name="signing_package">正在簽名安裝包</string>
<string name="installing_package">正在安裝</string>
<string name="install_progress_title">安裝進度</string>
<string name="ok">OK</string>
<string name="error_game_not_found">無法找到遊戲本體,你是否安裝了星露穀物語?</string>
<string name="error">錯誤</string>
<string name="failed_to_sign_game">無法簽名安裝包,請聯繫開發者獲取幫助</string>
<string name="failed_to_patch_game">無法修改安裝包,請聯繫開發者獲取幫助</string>
<string name="unpacking_smapi_files">正在解包</string>
<string name="failed_to_unpack_smapi_files">無法解包SMAPI環境</string>
<string name="confirm">確認</string>
<string name="cancel">取消</string>
<string name="confirm_delete_content">確定刪除該內容?</string>
<string name="text_install_tip1">注意需要不低於1.4.5.138版本的遊戲本體</string>
<string name="text_install_tip2">更新或安裝期間需要安裝遊戲本體</string>
<string name="duplicate_mod_found">發現該MOD存在多份拷貝請從以下位置刪除重複MOD%s</string>
<string name="error_smapi_not_installed">SMAPI尚未安裝請先點擊安裝按鈕</string>
<string name="error_failed_to_repair">無法修復SMAPI環境</string>
<string name="save">保存</string>
<string name="button_compat">兼容性</string>
<string name="button_nexus">N網</string>
<string name="button_release">官網</string>
<string name="button_logs">日誌</string>
<string name="smapi_game_name">SMAPI星露穀物語</string>
<string name="error_failed_to_create_file">無法創建以下文件: %s</string>
<string name="failed_to_process_manifest">無法處理AndroidManifest.xml文件</string>
<string name="error_no_supported_game_version">遊戲版本不支持,請更新版本或者下載兼容包</string>
<string name="menu_download">下載</string>
<string name="error_failed_to_download">無法下載目標資源</string>
<string name="error_depends_on_mod">%1$s依賴%2$s前置請先安裝它</string>
<string name="locale_pack">語言包</string>
<string name="info">提示</string>
<string name="download_unpack_success">已完成下載安裝</string>
<string name="progress">進度</string>
<string name="downloading">正在下載: %1$d KB / %2$d KB</string>
<string name="menu_about">關於</string>
<string name="abort">中止</string>
<string name="android_version_confirm">你的系統版本過老可能會導致0Harmony無效建議升級到安卓6及以上版本</string>
<string name="error_depends_on_mod_version" >%1$s依賴%2$s %3$s版本請先更新它</string>
<string name="button_qq_group_1_text">QQ群①: 860453392</string>
<string name="app_name">SMAPI安裝器</string>
<string name="button_compat">兼容性</string>
<string name="button_donation_text">捐贈</string>
<string name="button_qq_group_2_text">QQ群②: 1078428449</string>
<string name="button_gplay" >谷歌商店详情</string>
<string name="smapi_version">SMAPI版本: 3.3.2.3</string>
<string name="settings_verbose_logging">詳細日誌</string>
<string name="settings_check_for_updates">檢查更新</string>
<string name="settings_developer_mode">開發者模式</string>
<string name="button_install">安裝</string>
<string name="button_logs">日誌</string>
<string name="button_nexus">N網</string>
<string name="button_qq_group_1_text">QQ群①: 860453392</string>
<string name="button_qq_group_2_text">QQ群②: 1078428449</string>
<string name="button_release">官網</string>
<string name="cancel">取消</string>
<string name="confirm">確認</string>
<string name="confirm_delete_content">確定刪除該內容?</string>
<string name="confirm_disable_mod">確定禁用該內容?</string>
<string name="settings_set_mod_path">設置Mods位置</string>
<string name="continue_text">繼續</string>
<string name="download_unpack_success">已完成下載安裝</string>
<string name="downloading">正在下載: %1$d KB / %2$d KB</string>
<string name="duplicate_mod_found">發現該MOD存在多份拷貝請從以下位置刪除重複MOD%s</string>
<string name="error">錯誤</string>
<string name="error_depends_on_mod">%1$s依賴%2$s前置請先安裝它</string>
<string name="error_depends_on_mod_version" >%1$s依賴%2$s %3$s版本請先更新它</string>
<string name="error_failed_to_create_file">無法創建以下文件: %s</string>
<string name="error_failed_to_download">無法下載目標資源</string>
<string name="error_failed_to_repair">無法修復SMAPI環境</string>
<string name="error_game_not_found">無法找到遊戲本體,你是否安裝了星露穀物語?</string>
<string name="error_illegal_path">請輸入一個有效的路徑</string>
<string name="error_no_supported_game_version">遊戲版本不支持,請更新版本或者下載兼容包</string>
<string name="error_smapi_not_installed">SMAPI尚未安裝請先點擊安裝按鈕</string>
<string name="extracting_package">正在抽取安裝包</string>
<string name="failed_to_patch_game">無法修改安裝包,請聯繫開發者獲取幫助</string>
<string name="failed_to_process_manifest">無法處理AndroidManifest.xml文件</string>
<string name="failed_to_sign_game">無法簽名安裝包,請聯繫開發者獲取幫助</string>
<string name="failed_to_unpack_smapi_files">無法解包SMAPI環境</string>
<string name="info">提示</string>
<string name="input">輸入</string>
<string name="input_mods_path">請輸入Mods路徑</string>
<string name="error_illegal_path">請輸入一個有效的路徑</string>
<string name="install_progress_title">安裝進度</string>
<string name="installing_package">正在安裝</string>
<string name="locale_pack">語言包</string>
<string name="menu_about">關於</string>
<string name="menu_config">配置</string>
<string name="menu_config_edit">編輯</string>
<string name="menu_download">下載</string>
<string name="menu_help">幫助</string>
<string name="menu_install">安裝</string>
<string name="nav_header_subtitle">ZaneYork@qq.com</string>
<string name="nav_header_title">SMAPI安裝器</string>
<string name="ok">OK</string>
<string name="patching_package">正在安裝SMAPI補丁</string>
<string name="progress">進度</string>
<string name="save">保存</string>
<string name="settings_check_for_updates">檢查更新</string>
<string name="settings_developer_mode">開發者模式</string>
<string name="settings_set_language">語言</string>
<string name="settings_set_mod_path">設置Mods位置</string>
<string name="settings_translation_service">翻譯服務</string>
<string name="settings_verbose_logging">詳細日誌</string>
<string name="signing_package">正在簽名安裝包</string>
<string name="smapi_game_name">SMAPI星露穀物語</string>
<string name="smapi_version">SMAPI版本: 3.3.2.4</string>
<string name="text_install_tip1">注意需要不低於1.4.5.138版本的遊戲本體</string>
<string name="text_install_tip2">更新或安裝期間需要安裝遊戲本體</string>
<string name="unpacking_smapi_files">正在解包</string>
</resources>

View File

@ -11,5 +11,15 @@
<item>English</item>
<item>简体中文</item>
<item>繁體中文</item>
<item>한국어</item>
<item>ไทย</item>
<item>Español</item>
<item>Français</item>
<item>Português</item>
</string-array>
<string-array name="translators">
<item>關閉</item>
<item>谷歌</item>
<item>有道</item>
</string-array>
</resources>

View File

@ -1,67 +1,67 @@
<resources>
<string name="app_name">SMAPI安裝器</string>
<string name="nav_header_title">SMAPI安裝器</string>
<string name="nav_header_subtitle">ZaneYork@qq.com</string>
<string name="action_settings">設置</string>
<string name="menu_install">安裝</string>
<string name="menu_config">配置</string>
<string name="menu_config_edit">編輯</string>
<string name="menu_help">幫助</string>
<string name="button_install">安裝</string>
<string name="extracting_package">正在抽取安裝包</string>
<string name="patching_package">正在安裝SMAPI補丁</string>
<string name="signing_package">正在簽名安裝包</string>
<string name="installing_package">正在安裝</string>
<string name="install_progress_title">安裝進度</string>
<string name="ok">OK</string>
<string name="error_game_not_found">無法找到遊戲本體,你是否安裝了星露穀物語?</string>
<string name="error">錯誤</string>
<string name="failed_to_sign_game">無法簽名安裝包,請聯繫開發者獲取幫助</string>
<string name="failed_to_patch_game">無法修改安裝包,請聯繫開發者獲取幫助</string>
<string name="unpacking_smapi_files">正在解包</string>
<string name="failed_to_unpack_smapi_files">無法解包SMAPI環境</string>
<string name="confirm">確認</string>
<string name="cancel">取消</string>
<string name="confirm_delete_content">確定刪除該內容?</string>
<string name="text_install_tip1">注意需要不低於1.4.5.138版本的遊戲本體</string>
<string name="text_install_tip2">更新或安裝期間需要安裝遊戲本體</string>
<string name="duplicate_mod_found">發現該MOD存在多份拷貝請從以下位置刪除重複MOD%s</string>
<string name="error_smapi_not_installed">SMAPI尚未安裝請先點擊安裝按鈕</string>
<string name="error_failed_to_repair">無法修復SMAPI環境</string>
<string name="save">保存</string>
<string name="button_compat">兼容性</string>
<string name="button_nexus">N網</string>
<string name="button_release">官網</string>
<string name="button_logs">日誌</string>
<string name="smapi_game_name">SMAPI星露穀物語</string>
<string name="error_failed_to_create_file">無法創建以下文件: %s</string>
<string name="failed_to_process_manifest">無法處理AndroidManifest.xml文件</string>
<string name="error_no_supported_game_version">遊戲版本不支持,請更新版本或者下載兼容包</string>
<string name="menu_download">下載</string>
<string name="error_failed_to_download">無法下載目標資源</string>
<string name="error_depends_on_mod">%1$s依賴%2$s前置請先安裝它</string>
<string name="locale_pack">語言包</string>
<string name="info">提示</string>
<string name="download_unpack_success">已完成下載安裝</string>
<string name="progress">進度</string>
<string name="downloading">正在下載: %1$d KB / %2$d KB</string>
<string name="menu_about">關於</string>
<string name="abort">中止</string>
<string name="android_version_confirm">你的系統版本過老可能會導致0Harmony無效建議升級到安卓6及以上版本</string>
<string name="error_depends_on_mod_version" >%1$s依賴%2$s %3$s版本請先更新它</string>
<string name="button_qq_group_1_text">QQ群①: 860453392</string>
<string name="app_name">SMAPI安裝器</string>
<string name="button_compat">兼容性</string>
<string name="button_donation_text">捐贈</string>
<string name="button_qq_group_2_text">QQ群②: 1078428449</string>
<string name="button_gplay" >谷歌商店详情</string>
<string name="smapi_version">SMAPI版本: 3.3.2.3</string>
<string name="settings_verbose_logging">詳細日誌</string>
<string name="settings_developer_mode">開發者模式</string>
<string name="settings_check_for_updates">檢查更新</string>
<string name="button_install">安裝</string>
<string name="button_logs">日誌</string>
<string name="button_nexus">N網</string>
<string name="button_qq_group_1_text">QQ群①: 860453392</string>
<string name="button_qq_group_2_text">QQ群②: 1078428449</string>
<string name="button_release">官網</string>
<string name="cancel">取消</string>
<string name="confirm">確認</string>
<string name="confirm_delete_content">確定刪除該內容?</string>
<string name="confirm_disable_mod">確定禁用該內容?</string>
<string name="settings_set_mod_path">設置Mods位置</string>
<string name="continue_text">繼續</string>
<string name="download_unpack_success">已完成下載安裝</string>
<string name="downloading">正在下載: %1$d KB / %2$d KB</string>
<string name="duplicate_mod_found">發現該MOD存在多份拷貝請從以下位置刪除重複MOD%s</string>
<string name="error">錯誤</string>
<string name="error_depends_on_mod">%1$s依賴%2$s前置請先安裝它</string>
<string name="error_depends_on_mod_version" >%1$s依賴%2$s %3$s版本請先更新它</string>
<string name="error_failed_to_create_file">無法創建以下文件: %s</string>
<string name="error_failed_to_download">無法下載目標資源</string>
<string name="error_failed_to_repair">無法修復SMAPI環境</string>
<string name="error_game_not_found">無法找到遊戲本體,你是否安裝了星露穀物語?</string>
<string name="error_illegal_path">請輸入一個有效的路徑</string>
<string name="error_no_supported_game_version">遊戲版本不支持,請更新版本或者下載兼容包</string>
<string name="error_smapi_not_installed">SMAPI尚未安裝請先點擊安裝按鈕</string>
<string name="extracting_package">正在抽取安裝包</string>
<string name="failed_to_patch_game">無法修改安裝包,請聯繫開發者獲取幫助</string>
<string name="failed_to_process_manifest">無法處理AndroidManifest.xml文件</string>
<string name="failed_to_sign_game">無法簽名安裝包,請聯繫開發者獲取幫助</string>
<string name="failed_to_unpack_smapi_files">無法解包SMAPI環境</string>
<string name="info">提示</string>
<string name="input">輸入</string>
<string name="input_mods_path">請輸入Mods路徑</string>
<string name="error_illegal_path">請輸入一個有效的路徑</string>
<string name="install_progress_title">安裝進度</string>
<string name="installing_package">正在安裝</string>
<string name="locale_pack">語言包</string>
<string name="menu_about">關於</string>
<string name="menu_config">配置</string>
<string name="menu_config_edit">編輯</string>
<string name="menu_download">下載</string>
<string name="menu_help">幫助</string>
<string name="menu_install">安裝</string>
<string name="nav_header_subtitle">ZaneYork@qq.com</string>
<string name="nav_header_title">SMAPI安裝器</string>
<string name="ok">OK</string>
<string name="patching_package">正在安裝SMAPI補丁</string>
<string name="progress">進度</string>
<string name="save">保存</string>
<string name="settings_check_for_updates">檢查更新</string>
<string name="settings_developer_mode">開發者模式</string>
<string name="settings_set_language">語言</string>
<string name="settings_set_mod_path">設置Mods位置</string>
<string name="settings_translation_service">翻譯服務</string>
<string name="settings_verbose_logging">詳細日誌</string>
<string name="signing_package">正在簽名安裝包</string>
<string name="smapi_game_name">SMAPI星露穀物語</string>
<string name="smapi_version">SMAPI版本: 3.3.2.4</string>
<string name="text_install_tip1">注意需要不低於1.4.5.138版本的遊戲本體</string>
<string name="text_install_tip2">更新或安裝期間需要安裝遊戲本體</string>
<string name="unpacking_smapi_files">正在解包</string>
</resources>

View File

@ -11,5 +11,15 @@
<item>English</item>
<item>简体中文</item>
<item>繁體中文</item>
<item>한국어</item>
<item>ไทย</item>
<item>Español</item>
<item>Français</item>
<item>Português</item>
</string-array>
<string-array name="translators">
<item>关闭</item>
<item>谷歌</item>
<item>有道</item>
</string-array>
</resources>

View File

@ -1,67 +1,67 @@
<resources>
<string name="app_name">SMAPI安装器</string>
<string name="nav_header_title">SMAPI安装器</string>
<string name="nav_header_subtitle">ZaneYork@qq.com</string>
<string name="action_settings">设置</string>
<string name="menu_install">安装</string>
<string name="menu_config">配置</string>
<string name="menu_config_edit">编辑</string>
<string name="menu_help">帮助</string>
<string name="button_install">安装</string>
<string name="extracting_package">正在抽取安装包</string>
<string name="patching_package">正在安装SMAPI补丁</string>
<string name="signing_package">正在签名安装包</string>
<string name="installing_package">正在安装</string>
<string name="install_progress_title">安装进度</string>
<string name="ok">OK</string>
<string name="error_game_not_found">无法找到游戏本体,你是否安装了星露谷物语?</string>
<string name="error">错误</string>
<string name="failed_to_sign_game">无法签名安装包,请联系开发者获取帮助</string>
<string name="failed_to_patch_game">无法修改安装包,请联系开发者获取帮助</string>
<string name="unpacking_smapi_files">正在解包</string>
<string name="failed_to_unpack_smapi_files">无法解包SMAPI环境</string>
<string name="confirm">确认</string>
<string name="cancel">取消</string>
<string name="confirm_delete_content">确定删除该内容?</string>
<string name="text_install_tip1">注意需要不低于1.4.5.138版本的游戏本体</string>
<string name="text_install_tip2">更新或安装期间需要安装游戏本体</string>
<string name="duplicate_mod_found">发现该MOD存在多份拷贝请从以下位置删除重复MOD%s</string>
<string name="error_smapi_not_installed">SMAPI尚未安装请先点击安装按钮</string>
<string name="error_failed_to_repair">无法修复SMAPI环境</string>
<string name="save">保存</string>
<string name="button_compat">兼容性</string>
<string name="button_nexus">N网</string>
<string name="button_release">官网</string>
<string name="button_logs">日志</string>
<string name="smapi_game_name">SMAPI星露谷物语</string>
<string name="error_failed_to_create_file">无法创建以下文件: %s</string>
<string name="failed_to_process_manifest">无法处理AndroidManifest.xml文件</string>
<string name="error_no_supported_game_version">游戏版本不支持,请更新版本或者下载兼容包</string>
<string name="menu_download">下载</string>
<string name="error_failed_to_download">无法下载目标资源</string>
<string name="error_depends_on_mod">%1$s依赖%2$s前置请先安装它</string>
<string name="locale_pack">语言包</string>
<string name="info">提示</string>
<string name="download_unpack_success">已完成下载安装</string>
<string name="progress">进度</string>
<string name="downloading">正在下载: %1$d KB / %2$d KB</string>
<string name="menu_about">关于</string>
<string name="abort">中止</string>
<string name="android_version_confirm">你的系统版本过老可能会导致0Harmony无效建议升级到安卓6及以上版本</string>
<string name="button_qq_group_1_text">QQ群①: 860453392</string>
<string name="app_name">SMAPI安装器</string>
<string name="button_compat">兼容性</string>
<string name="button_donation_text">捐赠</string>
<string name="button_qq_group_2_text">QQ群②: 1078428449</string>
<string name="error_depends_on_mod_version">%1$s依赖%2$s %3$s版本请先更新它</string>
<string name="button_gplay">谷歌商店详情</string>
<string name="smapi_version">SMAPI版本: 3.3.2.3</string>
<string name="settings_verbose_logging">详细日志</string>
<string name="settings_developer_mode">开发者模式</string>
<string name="settings_check_for_updates">检查更新</string>
<string name="button_install">安装</string>
<string name="button_logs">日志</string>
<string name="button_nexus">N网</string>
<string name="button_qq_group_1_text">QQ群①: 860453392</string>
<string name="button_qq_group_2_text">QQ群②: 1078428449</string>
<string name="button_release">官网</string>
<string name="cancel">取消</string>
<string name="confirm">确认</string>
<string name="confirm_delete_content">确定删除该内容?</string>
<string name="confirm_disable_mod">确定禁用该内容?</string>
<string name="settings_set_mod_path">设置Mods位置</string>
<string name="continue_text">继续</string>
<string name="download_unpack_success">已完成下载安装</string>
<string name="downloading">正在下载: %1$d KB / %2$d KB</string>
<string name="duplicate_mod_found">发现该MOD存在多份拷贝请从以下位置删除重复MOD%s</string>
<string name="error">错误</string>
<string name="error_depends_on_mod">%1$s依赖%2$s前置请先安装它</string>
<string name="error_depends_on_mod_version">%1$s依赖%2$s %3$s版本请先更新它</string>
<string name="error_failed_to_create_file">无法创建以下文件: %s</string>
<string name="error_failed_to_download">无法下载目标资源</string>
<string name="error_failed_to_repair">无法修复SMAPI环境</string>
<string name="error_game_not_found">无法找到游戏本体,你是否安装了星露谷物语?</string>
<string name="error_illegal_path">请输入一个有效的路径</string>
<string name="error_no_supported_game_version">游戏版本不支持,请更新版本或者下载兼容包</string>
<string name="error_smapi_not_installed">SMAPI尚未安装请先点击安装按钮</string>
<string name="extracting_package">正在抽取安装包</string>
<string name="failed_to_patch_game">无法修改安装包,请联系开发者获取帮助</string>
<string name="failed_to_process_manifest">无法处理AndroidManifest.xml文件</string>
<string name="failed_to_sign_game">无法签名安装包,请联系开发者获取帮助</string>
<string name="failed_to_unpack_smapi_files">无法解包SMAPI环境</string>
<string name="info">提示</string>
<string name="input">输入</string>
<string name="input_mods_path">请输入Mods路径</string>
<string name="error_illegal_path">请输入一个有效的路径</string>
<string name="install_progress_title">安装进度</string>
<string name="installing_package">正在安装</string>
<string name="locale_pack">语言包</string>
<string name="menu_about">关于</string>
<string name="menu_config">配置</string>
<string name="menu_config_edit">编辑</string>
<string name="menu_download">下载</string>
<string name="menu_help">帮助</string>
<string name="menu_install">安装</string>
<string name="nav_header_subtitle">ZaneYork@qq.com</string>
<string name="nav_header_title">SMAPI安装器</string>
<string name="ok">OK</string>
<string name="patching_package">正在安装SMAPI补丁</string>
<string name="progress">进度</string>
<string name="save">保存</string>
<string name="settings_check_for_updates">检查更新</string>
<string name="settings_developer_mode">开发者模式</string>
<string name="settings_set_language">语言</string>
<string name="settings_set_mod_path">设置Mods位置</string>
<string name="settings_translation_service">翻译服务</string>
<string name="settings_verbose_logging">详细日志</string>
<string name="signing_package">正在签名安装包</string>
<string name="smapi_game_name">SMAPI星露谷物语</string>
<string name="smapi_version">SMAPI版本: 3.3.2.4</string>
<string name="text_install_tip1">注意需要不低于1.4.5.138版本的游戏本体</string>
<string name="text_install_tip2">更新或安装期间需要安装游戏本体</string>
<string name="unpacking_smapi_files">正在解包</string>
</resources>

View File

@ -11,5 +11,15 @@
<item>English</item>
<item>简体中文</item>
<item>繁體中文</item>
<item>한국어</item>
<item>ไทย</item>
<item>Español</item>
<item>Français</item>
<item>Português</item>
</string-array>
<string-array name="translators">
<item>OFF</item>
<item>Google</item>
<item>YouDao</item>
</string-array>
</resources>

View File

@ -5,5 +5,4 @@
<dimen name="nav_header_vertical_spacing">8dp</dimen>
<dimen name="nav_header_height">176dp</dimen>
<dimen name="fab_margin">16dp</dimen>
<dimen name="text_margin">16dp</dimen>
</resources>

View File

@ -1,8 +1,2 @@
<resources xmlns:android="http://schemas.android.com/apk/res/android">
<item name="ic_menu_camera" type="drawable">@android:drawable/ic_menu_camera</item>
<item name="ic_menu_gallery" type="drawable">@android:drawable/ic_menu_gallery</item>
<item name="ic_menu_slideshow" type="drawable">@android:drawable/ic_menu_slideshow</item>
<item name="ic_menu_manage" type="drawable">@android:drawable/ic_menu_manage</item>
<item name="ic_menu_share" type="drawable">@android:drawable/ic_menu_share</item>
<item name="ic_menu_send" type="drawable">@android:drawable/ic_menu_send</item>
</resources>

View File

@ -1,71 +1,70 @@
<resources>
<string name="app_name">SMAPI Installer</string>
<string name="nav_header_title">SMAPI Installer</string>
<string name="nav_header_subtitle">ZaneYork@qq.com</string>
<string name="action_settings">Settings</string>
<string name="menu_install">Install</string>
<string name="menu_config">Config</string>
<string name="menu_config_edit">Edit</string>
<string name="menu_help">Help</string>
<string name="button_install">Install</string>
<string name="extracting_package">Extracting Install Package</string>
<string name="patching_package">Patching SMAPI</string>
<string name="signing_package">Signing</string>
<string name="installing_package">Installing</string>
<string name="install_progress_title">Install Progress</string>
<string name="ok">OK</string>
<string name="error_game_not_found">Can\'t find the Stardew Valley\'s apk, did you install it?</string>
<string name="error">Error</string>
<string name="failed_to_sign_game">Failed to sign the game, please ask developer for help</string>
<string name="failed_to_patch_game">Failed to patch the game, please ask developer for help</string>
<string name="unpacking_smapi_files">Unpacking</string>
<string name="failed_to_unpack_smapi_files">Failed to unpack smapi files</string>
<string name="confirm">Confirm</string>
<string name="cancel">Cancel</string>
<string name="confirm_delete_content">Are you sure to delete it?</string>
<string name="text_install_tip1">Notes: Game version 1.4.5.138 or later is required.</string>
<string name="text_install_tip2">The base game is required when updating/installing.</string>
<string name="duplicate_mod_found">Found duplicate copy of mod, please delete duplicate of them: %s</string>
<string name="error_smapi_not_installed">SMAPI has not installed yet, press install first</string>
<string name="error_failed_to_repair">Failed to repair SMAPI environment</string>
<string name="save">Save</string>
<string name="button_compat">Compat</string>
<string name="button_nexus">Nexus</string>
<string name="button_release">Release</string>
<string name="button_logs">Logs</string>
<string name="smapi_game_name">SMAPI Stardew Valley</string>
<string name="error_failed_to_create_file">Failed to create target file : %s</string>
<string name="failed_to_process_manifest">Failed to process AndroidManifest.xml file</string>
<string name="error_no_supported_game_version">Game version not supported, upgrade or download compat package first</string>
<string name="menu_download">Download</string>
<string name="error_failed_to_download">Failed to download target resources</string>
<string name="error_depends_on_mod">The %1$s is depends on %2$s, please install it first</string>
<string name="locale_pack">Locale Pack</string>
<string name="info">Info</string>
<string name="download_unpack_success">Download and unpack success</string>
<string name="progress">Progress</string>
<string name="downloading">Downloading: %1$d KB / %2$d KB</string>
<!-- TODO: Remove or change this placeholder text -->
<string name="menu_about">About</string>
<string name="abort">Abort</string>
<string name="android_version_confirm">You device system version is too old for MonoMod, this may leads to crash of 0Harmony framework, update to Android M or later if possible</string>
<string name="error_depends_on_mod_version">The %1$s is depends on %2$s %3$s version or later, please update it first</string>
<string name="app_name">SMAPI Installer</string>
<string name="button_compat">Compat</string>
<string name="button_donation_text">Donation</string>
<string name="button_gplay">View in Play Store</string>
<string name="button_install">Install</string>
<string name="button_logs">Logs</string>
<string name="button_nexus">Nexus</string>
<string name="button_qq_group_1_text">QQ Group 1: 860453392</string>
<string name="button_qq_group_2_text">QQ Group 2: 1078428449</string>
<string name="icon_desc" translatable="false">icon</string>
<string name="button_donation_text">Donation</string>
<string name="toast_redpacket_message" translatable="false">红包码已复制\n支付宝首页搜索“9188262” 立即领红包</string>
<string name="button_gplay">View in Play Store</string>
<string name="smapi_version">SMAPI Version: 3.3.2.3</string>
<string name="settings_verbose_logging">Verbose Logging</string>
<string name="settings_check_for_updates">Check For Updates</string>
<string name="settings_developer_mode">Developer Mode</string>
<string name="button_release">Release</string>
<string name="cancel">Cancel</string>
<string name="confirm">Confirm</string>
<string name="confirm_delete_content">Are you sure to delete it?</string>
<string name="confirm_disable_mod">Are you sure to disable it?</string>
<string name="settings_set_mod_path">Set Mods Path</string>
<string name="continue_text">Continue</string>
<string name="download_unpack_success">Download and unpack success</string>
<string name="downloading">Downloading: %1$d KB / %2$d KB</string>
<string name="duplicate_mod_found">Found duplicate copy of mod, please delete duplicate of them: %s</string>
<string name="error">Error</string>
<string name="error_depends_on_mod">The %1$s is depends on %2$s, please install it first</string>
<string name="error_depends_on_mod_version">The %1$s is depends on %2$s %3$s version or later, please update it first</string>
<string name="error_failed_to_create_file">Failed to create target file : %s</string>
<string name="error_failed_to_download">Failed to download target resources</string>
<string name="error_failed_to_repair">Failed to repair SMAPI environment</string>
<string name="error_game_not_found">Can\'t find the Stardew Valley\'s apk, did you install it?</string>
<string name="error_illegal_path">Please input a valid path</string>
<string name="error_no_supported_game_version">Game version not supported, upgrade or download compat package first</string>
<string name="error_smapi_not_installed">SMAPI has not installed yet, press install first</string>
<string name="extracting_package">Extracting Install Package</string>
<string name="failed_to_patch_game">Failed to patch the game, please ask developer for help</string>
<string name="failed_to_process_manifest">Failed to process AndroidManifest.xml file</string>
<string name="failed_to_sign_game">Failed to sign the game, please ask developer for help</string>
<string name="failed_to_unpack_smapi_files">Failed to unpack smapi files</string>
<string name="info">Info</string>
<string name="input">Input</string>
<string name="input_mods_path">Please input mods path</string>
<string name="error_illegal_path">Please input a valid path</string>
<string name="install_progress_title">Install Progress</string>
<string name="installing_package">Installing</string>
<string name="locale_pack">Locale Pack</string>
<string name="menu_about">About</string>
<string name="menu_config">Config</string>
<string name="menu_config_edit">Edit</string>
<string name="menu_download">Download</string>
<string name="menu_help">Help</string>
<string name="menu_install">Install</string>
<string name="nav_header_subtitle">ZaneYork@qq.com</string>
<string name="nav_header_title">SMAPI Installer</string>
<string name="ok">OK</string>
<string name="patching_package">Patching SMAPI</string>
<string name="progress">Progress</string>
<string name="save">Save</string>
<string name="settings_check_for_updates">Check For Updates</string>
<string name="settings_developer_mode">Developer Mode</string>
<string name="settings_set_language">Language</string>
<string name="settings_set_mod_path">Set Mods Path</string>
<string name="settings_translation_service">Translation Service</string>
<string name="settings_verbose_logging">Verbose Logging</string>
<string name="signing_package">Signing</string>
<string name="smapi_game_name">SMAPI Stardew Valley</string>
<string name="smapi_version">SMAPI Version: 3.3.2.4</string>
<string name="text_install_tip1">Notes: Game version 1.4.5.138 or later is required.</string>
<string name="text_install_tip2">The base game is required when updating/installing.</string>
<string name="unpacking_smapi_files">Unpacking</string>
<string name="toast_redpacket_message" translatable="false">红包码已复制\n支付宝首页搜索“9188262” 立即领红包</string>
<string name="icon_desc" translatable="false">icon</string>
</resources>

View File

@ -5,11 +5,12 @@ buildscript {
repositories {
google()
jcenter()
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.6.1'
classpath "androidx.navigation:navigation-safe-args-gradle-plugin:2.3.0-alpha03"
classpath 'org.greenrobot:greendao-gradle-plugin:3.2.2'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files