背景
我为我的应用创建了两个翻译- values-en和values-fr-。我想让用户在UI中更改应用语言。因此,我使用Locale.getAvailableLocales();方法使用系统的可用语言环境创建并填充了微调器:
Spinner languageSpinner = (Spinner)findViewById(R.id.spinnerLanguage);
Locale[] locales = Locale.getAvailableLocales();
String[] langs = new String[locales.length];
for (int i = 0 ; i < locales.length ; i++ ){
// display a more readable language name like "English (USA)"
langs[i] = locales[i].getDisplayName();
}
ArrayAdapter adapter = new ArrayAdapter(this,android.R.layout.simple_spinner_item,langs);
languageSpinner.setAdapter(adapter);
Run Code Online (Sandbox Code Playgroud)
上面的代码将为我提供当前设备中的所有可用语言环境。由于列表很长,可能会使我的用户感到困惑,所以我想显示翻译时提供的语言环境。
编辑:在这里问类似的问题,评论表明没有直接的方法。
尽管我可以向微调器提供硬编码的数据,但这是使整个过程动态化的更好方法。
题
有没有办法在运行时获得可用的翻译?
理想的方法示例是:getTranslationList();最终返回资源中可用翻译语言的数组,例如:{"en","fr"}或{"values", "values-en", "values-fr"}。
背景
我一直在为一个项目使用 MQTT,但遇到了一个奇怪的问题。我paho用作我的 MQTT 客户端和VerneMQ代理。
VerneMQ 代理服务已启动并正在运行,我可以通过 runnnig 确认这一点,netstat并且我可以看到该127.0.0.1:1883条目处于LISTENING模式中。
这是我的客户端代码:
public class Producer implements MqttCallback {
private String brokerUri;
private String clientId;
public Producer(String brokerUri, String clientId){
this.brokerUri = brokerUri;
this.clientId = clientId;
}
public void doProduce(String topic, String payload){
MemoryPersistence memoryPersistence = new MemoryPersistence();
try {
MqttAsyncClient mqttAsyncClient = new MqttAsyncClient(brokerUri, clientId, memoryPersistence);
MqttConnectOptions mqttConnectOptions = new MqttConnectOptions();
mqttConnectOptions.setCleanSession(true);
mqttAsyncClient.setCallback(this);
mqttAsyncClient.connect(mqttConnectOptions);
MqttMessage mqttMessage = new MqttMessage();
mqttMessage.setPayload(payload.getBytes());
mqttAsyncClient.publish(topic, mqttMessage); …Run Code Online (Sandbox Code Playgroud) 背景
我正在尝试为在 Raspberry 3 上运行的 Rasbian 构建一个示例 REST api 应用程序。我使用cpprestsdk.
示例包含以下头文件:
#include <condition_variable>
#include <mutex>
#include <iostream>
static std::condition_variable _condition;
static std::mutex _mutex;
namespace cfx {
class InterruptHandler {
public:
static void hookSIGINT() {
signal(SIGINT, handleUserInterrupt);
}
static void handleUserInterrupt(int signal){
if (signal == SIGINT) {
std::cout << "SIGINT trapped ..." << '\n';
_condition.notify_one();
}
}
static void waitForUserInterrupt() {
std::unique_lock<std::mutex> lock { _mutex };
_condition.wait(lock);
std::cout << "user has signaled to interrup program..." << '\n';
lock.unlock();
} …Run Code Online (Sandbox Code Playgroud) java ×2
android ×1
asynchronous ×1
c++11 ×1
cmake ×1
cpprest-sdk ×1
localization ×1
makefile ×1
mqtt ×1
paho ×1
raspbian ×1