最佳实践:在多语言应用中使用语言代码或语言标签。

问题描述 投票:1回答:1

所以我按照教程创建了一个多语言的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部分不匹配,所以即使认为手机设置为使用德语,因为是在美国,也不会翻译成德语。

你们都喜欢什么?我现在想用LanguageCode来检查语言。如果languageCode是'de'就用德文翻译。

有什么理由不使用LanguageCode而使用LanguageTag吗?

react-native internationalization multilingual i18next
1个回答
0
投票

首先,你必须有参数的REST服务器的数据。

例如:对于英语: https:/example.comenhome

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.comfrhome。

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数据,你可以使用我的工具 EasyTranslation以下是使用方法

use EasyTranslation\EasyTranslation\EasyTranslation;
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();
© www.soinside.com 2019 - 2024. All rights reserved.