Skip to content

Instantly share code, notes, and snippets.

@arissa34
Created December 8, 2019 13:38
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save arissa34/64ae3ebb4691ffbf5e9bea5b9d6c71e1 to your computer and use it in GitHub Desktop.
Save arissa34/64ae3ebb4691ffbf5e9bea5b9d6c71e1 to your computer and use it in GitHub Desktop.
package rma.ox.engine.ressource.language;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.utils.I18NBundle;
import java.util.Locale;
import rma.ox.engine.settings.SettingsHelper;
public class Languages {
private static String PATH_STRINGS = "data/lang/strings";
private static I18NBundle bundle;
private static Locale locale;
public static void init() {
init(PATH_STRINGS);
}
public static void init(String path) {
PATH_STRINGS = path;
I18NBundle.setExceptionOnMissingKey(false);
I18NBundle.setSimpleFormatter(true);
String language = SettingsHelper.get().getLanguage();
if (language != null && language.contains("default")) {
locale = Locale.getDefault();
} else {
locale = new Locale(language);
}
bundle = I18NBundle.createBundle(Gdx.files.internal(PATH_STRINGS), locale);
}
/**
* @param language example "en" or "fr"
*/
public static void changeLanguage(String language){
if(language == null || language.isEmpty()) return;
locale = new Locale(language);
SettingsHelper.get().setLanguage(locale);
bundle = I18NBundle.createBundle(Gdx.files.internal(PATH_STRINGS), locale);
}
/**
* Libgdx file syntaxe (use {0} for args, start at 0):
* myKey=Best - My key is {0}
* <p>
* in java call: Languages.get("myKey", "Coucou");
* result: "My key is Coucou"
* <p>
* assets/strings/
* -strings.properties (default file)
* -strings_fr.properties OR strings_fr_FR.properties
*/
public static String get(String key, Object... args) {
if (bundle == null) {
return "BUNDLE NULL";
}
if (key == null || key.isEmpty()) {
return "KEY NULL OR EMPTY";
}
if (args.length > 0) {
return bundle.format(key, args);
} else {
return bundle.get(key);
}
}
}
@arissa34
Copy link
Author

arissa34 commented Dec 8, 2019

How to use it ?

Initialization

Languages.init();

or with your custom path

Languages.init("data/lang/my_strings_file");

Get your string

Languages.get("myKey")

If you need param

Languages.get("myKey", "Hello")

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment