最佳做法:在多语言应用中使用语言代码或语言标签



所以我按照一个教程创建了一个多语言的React-Native应用程序。我的应用程序现在找出设备的语言,然后将其与应用程序的翻译进行匹配。但是,本教程(所以我现在的编码(使用 languageTag 来匹配翻译。

德国电话将是de-DE,英语电话en-US等。据我了解,首先它是设备的语言,其次是区域。

所以我的翻译设置如下;

I18n.translations = {
default: en,
'en-US': en,
'nl-NL': nl,
'fr-FR': fr,
'de-DE': de
};

然而,在美国的德语手机将是languageTag de-US,这与我的de-DE:de部分不匹配,所以甚至认为手机设置为使用德语,因为它在美国它不会翻译成德语。

你们都喜欢什么?我现在正在考虑使用语言代码来检查语言。如果语言代码为"de",请使用德语翻译。

是否有理由反对使用语言代码代替语言标签?

首先,您必须在 REST 服务器的数据中包含参数。

例: 英语 : https://example.com/en/home

try {
URL url = new URL("https://example.com/en/home");
BufferedInputStream bis = new BufferedInputStream(url.openStream());
byte[] buffer = new byte[1024];
StringBuilder sb = new StringBuilder();
int bytesRead = 0;
while((bytesRead = bis.read(buffer)) > 0) {
String text = new String(buffer, 0, bytesRead);
sb.append(text);
}
bis.close();
return sb.toString();
} catch (Exception e) {
//on error some code
}

例: 法语:https://example.com/fr/home

try {
URL url = new URL("https://example.com/fr/home");
BufferedInputStream bis = new BufferedInputStream(url.openStream());
byte[] buffer = new byte[1024];
StringBuilder sb = new StringBuilder();
int bytesRead = 0;
while((bytesRead = bis.read(buffer)) > 0) {
String text = new String(buffer, 0, bytesRead);
sb.append(text);
}
bis.close();
return sb.toString();
} catch (Exception e) {
//on error some code
}

要翻译您的 REST 数据,您可以使用我的工具 易翻译 下面如何使用它

use EasyTranslationEasyTranslationEasyTranslation;
include('src/EasyTranslation.php');
class Example extends EasyTranslation{
public function __construct() {
$this->setLanguage();   // Set a language or by default will check for client language (e.g. French is "fr")
echo $this->translate('Welcome');
}
}
new Example();

最新更新