Add Language Support For Carpet Settings (#267)

* Added language supports for carpet settings

use /set-carpet-language to set your language.

* Added zh_cn.json - in progress

Not accomplished yet, only translations for testing the language support.

* Create model_for_new_language.jsons.txt

* Rename model_for_new_language.jsons.txt to model_for_new_language.json

* Update model_for_new_language.json

* Update model_for_new_language.json

* Update and rename model_for_new_language.json to en_us.json

* Added setting CarpetLanguage

* Delete SetLanguageCommand.java

* Add files via upload

* Update SettingsManager.java

* Add files via upload

* Update LanguageUtils.java

* Update SettingsManager.java
This commit is contained in:
X-Green authored and GitHub committed 2020-05-15 14:58:50 -03:00
1 parent 7447129d92
commit 1f5b06daa2
5 files changed
+243 -24

No files matched your search

@@ -0,0 +1,106 @@
package carpet.utils;
import com.google.common.collect.ImmutableList;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.reflect.TypeToken;
import org.apache.commons.io.IOUtils;
import java.io.IOException;
import java.lang.reflect.Type;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.Objects;
public class LanguageUtils
{
private static Map<String, String> translationMap;
public static String currentLanguage;
public static String translate(String translationKey)
{
if (translationMap == null)
{
return translationKey;
}
return translationMap.getOrDefault(translationKey, translationKey);
}
public static String translateOrDefault(String translationKey, String defaultValue)
{
if (translationMap == null)
{
return defaultValue;
}
return translationMap.getOrDefault(translationKey, defaultValue);
}
public static String translatePlusDefault(String translationKey, String defaultValue){
return translationMap.containsKey(translationKey) ? translateOrDefault(translationKey, defaultValue) + String.format(" (%s)", defaultValue): defaultValue;
}
public static String getRuleNameKey(String rule)
{
return String.format("carpet.rule.%s.name", rule);
}
public static String getRuleDescKey(String rule)
{
return String.format("carpet.rule.%s.desc", rule);
}
public static ImmutableList<String> getRuleExtras(String rule, ImmutableList<String> defaultList)
{
if (translationMap == null) return defaultList;
String keyBase = String.format("carpet.rule.%s.extra.", rule);
List<String> extras = new ArrayList<>();
int i = 0;
do {
String keyExtra = keyBase + i;
String value = translationMap.get(keyExtra);
System.out.println(keyExtra);
System.out.println(value);
if (value != null && !value.equals(""))
{
extras.add(value);
}
i++;
}
while (translationMap.containsKey(keyBase + (i - 1)));
return (extras.isEmpty()) ? defaultList : ImmutableList.copyOf(extras);
}
public static void setLanguage(String language)
{
if (language.equals("none"))
{
currentLanguage = language;
translationMap = null;
return;
}
String langJs;
try{
langJs = IOUtils.toString(
Objects.requireNonNull(LanguageUtils.class.getClassLoader().getResourceAsStream(String.format("assets/carpet/lang/%s.json", language))),
StandardCharsets.UTF_8);
} catch (NullPointerException | IOException e) {
return;
}
Gson gson = new GsonBuilder().enableComplexMapKeySerialization().create();
Type type = new TypeToken<Map<String, String>>() {}.getType();
Map<String, String> map1 = gson.fromJson(langJs, type);
currentLanguage = language;
translationMap = map1;
}
public static void loadConfiguration()
{
}
}