Správa překladů

Over the Air (Strings)

Obsah je strojově přeložen z angličtiny s použitím Phrase Language AI.

Aktualizujte překlady pro aplikace iOS, Android, React Native a Flutter jediným kliknutím, aniž byste museli vydat novou verzi do App Store nebo Google Play. Aktualizace textových štítků se okamžitě přenášejí do mobilních aplikací.

OTA_user_device_diagram.png

Funkce Over-the-Air (OTA) se také integruje s platformami i18Next a Rails, což uživatelům umožňuje aktualizovat a spravovat lokalizovaný obsah ve webových aplikacích bez nutnosti opakovaného nasazení.

Objednávka použití aktualizovaného nastavení vyžaduje vytvoření nového vydání. Veškerý obsah obsažený ve vydání musí být k dispozici ve Phrase Strings, který streamuje překlady přímo do aplikace. Pokud obsah není k dispozici, překlady nebudou dodány.

Při prvním spuštění aplikace implementující iOS, Android, React Native nebo Flutter SDK v zařízení se vygeneruje jedinečný a náhodný identifikátor zařízení. Tento identifikátor sleduje aktivní uživatele za dané časové období. Nepoužívá se pro žádnou jinou formu ani prostředky sledování a neobsahuje žádné informace o uživateli ani zařízení.

Jediný limit týkající se OTA je počet MAU (aktivních uživatelů za měsíc) v závislosti na vybrané cenové edici.

MAU je počet jedinečných zařízení, ze kterých je překlad vyžadován. Každému zařízení je přiřazeno náhodné ID a MAU se počítá z počtu různých ID přiřazených za posledních 30 dní. Každá interakce s Phrase servery se považuje za požadavek.

Data

SDK komunikuje se službou OTA na objednávku aktualizace a ke každému požadavku přikládá následující údaje:

  • Identifikátor zařízení (např. "F3AFCB10-80A2-84CB-94C0-27F5EF58876D". Unikátní pro tuto aplikaci, a proto neumožňuje sledování konkrétního zařízení.)

  • Verze aplikace (např. "1.2.0")

  • Poslední aktualizovat překladového souboru (např. "1542187679")

  • Verze SDK (např. "1.0.0")

  • Kód jazyka (např. "de-DE")

  • Formát souboru (např. "Strings")

  • Klient (např. „ios“)

  • ID distribuce (ID distribuce)

  • Environment secret (rozlišit vývoj od výroby)

OTA Distribuce

Platformy cíle jsou definovány v rámci distribuce:

  • iOS

  • Android

  • Flutter

  • i18next

  • Rails

Je možné více distribucí, ale v ideálním případě je jedna distribuce na projekt. Pokud používáte distribuci pro iOS a Android, zástupné znaky pro tyto dva formáty se automaticky převedou.

Záložní systémy

Pokud jsou v nastavení jazyků projektu, ke kterému je distribuce připojena, nastaveny záložní jazyky, Strings z vybraného jazyka se zobrazí, pokud požadovaný jazyk existuje, ale klíč se nepřeloží.

Pokud je použit jazyk specifický pro danou zemi (např. en-GB), ale není součástí vydání, může se systém spolehnout na standardní verzi (např. en) tohoto jazyka, pokud v projektu existuje. Pokud není požadovaný jazyk nalezen, může být místo něj použit výchozí kód jazyka projektu.

Vytvořit distribuci

Distribuci vytvoříte takto:

  1. V Over the air (OTA) Box na stránce Integrace klikněte na tlačítko Konfigurace nebo počet konfigurací, pokud již existují.

    Otevře se stránka Over the air a zobrazí stávající konfigurace.

  2. Klikněte na Nová distribuce. Otevře se okno Přidat distribuci.

  3. V záložce Obecné zadejte název, ke kterému projektu je distribuce přiřazena, požadované jazyky a požadované Platformy.

    • V případě distribucí systému Android klikněte na záložku Android a vyberte možnost formátu, která v případě potřeby uzavře libovolný překlad včetně HTML tagů do CDATA.

    • Po výběru projektu, který se má přiřadit k distribuci, se zobrazí záložka Naplánování. V případě potřeby použijte tuto záložku a nastavte plánovaná vydání OTA v distribuci.

  4. Na záložce Záložní jazyky vyberte podle potřeby konkrétní záložní nastavení distribuce. Záložní možnosti jsou upřednostňovány podle seznamu.

  5. Případně klikněte na záložku Překlady a vyberte možnost použít poslední zkontrolovanou verzi překladů.

  6. Klikněte na Uložit.

    Distribuční údaje se zobrazují společně s ID vyžadovanými SDK. Podrobnosti lze znovu zobrazit kliknutím na distribuci na stránce Over the air.

Vydání OTA

Chcete-li aktualizovat překlady, vytvořte v distribuci nové vydání. Aktuální stav projektu je exportován a zpřístupněn připojeným klientům.

Vydání vytvoříte takto:

  1. Na stránce Over the air klikněte vedle požadované distribuce na Přidat vydání.

    Otevře se okno Nové vydání.

  2. Uveďte popis, požadovanou Platformu, Větev, Kódy jazyka a verze aplikace.

    V případě potřeby zadejte tags, které mají ve vydání obsahovat pouze klíče s konkrétními tags.

  3. Klikněte na Uložit.

    Vydání je přidáno do seznamu v dolní části stránky s podrobnostmi o distribuci.

Naplánovat vydání OTA

Chcete-li nastavit opakované plány vydání distribuce, postupujte takto:

  1. Na stránce Over the air klikněte na ikonu Phrase_Gear.png ozubeného kola vedle požadované distribuce.

    Zobrazí se okno Upravit distribuci.

  2. Vyberte záložku Naplánovat vydání a klikněte na Povolit plánování.

    Zobrazí se možnosti plánování vydání.

    Poznámka

    Možnosti plánování jsou k dispozici také při vytvoření nové distribuce.

  3. Z rozevíracího seznamu Vytvořit vydání vyberte frekvenci vydání výběrem jedné z dostupných možností:

    • Den

    • Týden

      Vyberte pro naplánovaná vydání dny pracovního klidu.

  4. Zadejte čas a příslušné časové pásmo.

  5. V případě potřeby vyberte pro plánovaná vydání větev, tagy a jazyky.

    • Pole Větev se zobrazí pouze v případě, že je v projektu povoleno větvení. Výběrem větve se aktualizuje seznam kódů jazyků a jazyků.

  6. Případně zadejte verze aplikace do polí Min verze a Max verze.

    Pokud chcete použít vydání harmonogramu pro všechny verze aplikace, pole nevyplňujte.

  7. Klikněte na Uložit.

    Distribuce je aktualizována informacemi o plánování vydání.

Zakázáním harmonogramu se zastaví automatické vydání distribuce, ale nakonfigurovaná nastavení se uloží.

Poznámka

Z důvodu kontinuálního vylepšování nemusí uživatelské rozhraní vypadat stejně jako na videu.

Přehledy OTA Mobilní SDK a webových knihoven

Integrace vhodné mobilní SDK nebo webové knihovny umožňuje aktualizaci překladů jedním kliknutím, ale také poskytuje metriky pro měření využití. Přehledy mobilní SDK a webové knihovny poskytují cenný přehled o aktivních uživatelích aplikací a jejich jazycích. K této sadě sestav je přístup pro každou distribuci a data pro sestavy se aktualizují dvakrát denně.

Přehledy se poskytují pro počet aktivních uživatelů, celkový počet požadavků, požadavků podle jazyka, požadavků podle platformy a jazyků zařízení.

Reporty pro každou distribuci jsou přístupné pomocí ikony Reports.jpg na stránce Over the air.

OTA Android SDK Installation

Pomocí SDK aplikace pravidelně kontroluje aktualizované překlady a stahuje je na pozadí.

Pravidelně kontrolujte nejnovější vydání Android SDK, zejména s ohledem na upgrade.

Pokud se překlady neaktualizují:

  • Zkontrolujte ID distribuce a tajnost prostředí.

  • Ujistěte se, že bylo vytvořeno vydání pro aktuální verzi aplikace.

  • Znovu načtěte ViewController, aby se změny zobrazily okamžitě.

Pokud se používá nesprávná verze překladu, ujistěte se, že vydání obsahuje nejnovější překlady, je k dispozici aktuální verze aplikace a je nastavena verzeName pro aplikaci a používají formát <Více závažné.Méně závažné.point>.

Požadavky

  • SDK vyžaduje minimálně kompatibilní verzi 1.2.0. Pokud používáte starší verzi appcompat, zvažte použití SDK verze 2.1.3

  • Knihovna závisí na systému AndroidX, pokud jde o podporu zpětně kompatibilních prvků uživatelského rozhraní, jako je panel nástrojů.

Zahrnout SDK

Přidat nové úložiště do kořenového souboru build.gradle:

allprojects {
    repositories {
        ...
        maven { url "https://maven.download.phrase.com" }
    }
}

Přidejte knihovnu jako závislost:

dependencies {
    implementation "com.phrase.android:ota-sdk:3.5.0"
    ...
}

Podpora Jetpack Compose

Chcete-li povolit podporu Jetpack Compose pro překlady OTA, postupujte takto:

  1. Přidejte knihovní implementaci "com.phrase.android:ota-sdk-compose:3.5.0" do kořenového build.gradle.

  2. Zalomení Jetpacku Složte kód ve Phrase { ... }.

Konfigurace

Spusťte SDK ve třídě aplikací a přidejte ID distribuce a secret prostředí. Třídy dědící z Application by měly přepsat attachBaseContext a povolit překlady mimo kontext aktivity:

public class MainApplication extends Application {
  @Override
  public void onCreate() {
      super.onCreate();
      Phrase.setup(this, "DISTRIBUTION_ID", "ENVIRONMENT_TOKEN");
      Phrase.updateTranslations();
  }

  @Override
  protected void attachBaseContext(Context newBase) {
    super.attachBaseContext(Phrase.wrapApplicationContext(newBase));
  }  
}

Vložte SDK do každé aktivity, např. vytvořením základní aktivity, kterou všechny ostatní aktivity dědí z:

public class BaseActivity extends AppCompatActivity {
  @NonNull
  @Override
  public AppCompatDelegate getDelegate() {
    return Phrase.getDelegate(this, super.getDelegate());
  }
}

Překlady lze použít jako obvykle v sestavách:

<TextView android:text="@string/translation_key" />

A vnitřní kód:

TextView text = (TextView) findViewById(R.id.text_id);
text.setText(R.string.translation_key);

Některé knihovny nepodporují automatické rozbalování kontextu a očekávají určitou třídu. V tomto případě lze zalamování kontextu v komponentách Jetpack Compose zakázat pomocí:

Phrase(contextWrapping = false) {
    Text( text = phraseString(R.string.test) )
}

Konfigurace pro úrovně protokolu:

  • Java PhraseLog.setLogLevel(Severity.Debug);

  • Kotlin

    PhraseLog.logLevel = Severity.Verbose

  • Další podporované možnosti protokolování

    • None

    • Error

    • Warning

    • Info

    • Debug

    • Verbose

Změnit jazyk

Pokud nepoužíváte systémový jazyk, lze v metodě setLocaleCode nastavit jiný jazyk. Kód jazyka (kód jazyka) musí být ve vydání.

Phrase.setLocaleCode("fr");
Phrase.updateTranslations();

Vlastní verze aplikace

SDK ve výchozím nastavení používá verzi aplikace k vrácení vydání, které odpovídá omezením vydání pro min a max verzi. Verze aplikace musí použít sémantické verzování, jinak se překlad neaktualizuje. Pokud aplikace nepoužije sémantické verzování, je možné použitou verzi aplikace ručně přepsat.

Příklad:

Phrase.setAppVersion("3.2.4");

Verze musí být nastavena před voláním updateTranslations( ).

Nastavit časový limit

Výchozí časový limit pro stahování překladů je nastaven na 10s.

Výchozí lze změnit pomocí:

Phrase.setTimeout(10000); // Timeout in milliseconds

Aktualizovat návrat

Vyžaduje-li zpracování úspěšných aktualizací překladu, připojte handler pro zpětné volání:

Phrase.updateTranslations(new TranslationsSyncCallback() {
    @Override
    public void onSuccess(boolean translationsChanged) {
    }

    @Override
    public void onFailure() {
    }
});

Aktualizace překladů lze spouštět také ručně. Nově načtené překlady se zobrazí při Dalším spuštění aplikace.

Chcete-li mít nejnovější překlady okamžitě k dispozici, použijte metodu Phrase.applyPendingUpdates(). To lze kombinovat s poslechem aktualizací překladu:

Phrase.updateTranslations(new TranslationsSyncCallback() {
    @Override
    public void onSuccess(boolean translationsChanged) {
      if(translationsChanged) {
         Phrase.applyPendingUpdates()
        // Custom logic to refresh UI
      }
    }

    @Override
    public void onFailure() {
    }
});

Uživatelské rozhraní nezobrazuje překlady automaticky a je třeba je znovu vytvořit.

Konfigurace datového centra v USA

Datové centrum Phrase US je také podporováno. Datové centrum v USA lze nakonfigurovat voláním:

Phrase.setHost("https://ota.us.phrase.com/")

Záložní systém

Pokud se nelze do Phrase dostat kvůli chybějícímu síťovému připojení klienta nebo přerušení služby, použije SDK zabalené překlady ze souboru se zdrojem. Doporučujeme pravidelnou aktualizaci zabalených překladů v aplikaci. SDK také ukládá překlady lokálně do mezipaměti v zařízení. Pokud taková mezipaměť existuje, používá se do doby, než se Další překlad aktualizuje.

SDK používá pro překlady nejnovější vydání. V případě, že je pro aplikaci nastaven verzeName, použije se nejnovější vydání, které splňuje omezení verze.

Přidat nový jazyk

Vytvoření nového jazyka ve Phrase a vytvořit nové vydání. SDK načítá jazyk, pokud se jedná o jazyk zařízení uživatele. Při vydání nové verze aplikace se doporučuje pravidelně přidávat nové soubory strings.xml pro nové jazykové soubory, nebo se uživatelům při prvním spuštění aplikace zobrazí pouze záložní překlady určené systémem Android.

Audit

SDK je uzavřený zdroj a nelze ho zobrazit ani upravovat. Pokud se jedná o požadavek organizace, lze audity poskytnout. V případě potřeby nás Kontaktujte.

Vlastní zobrazení Podpora

Vlastní zobrazení lze překládat pomocí stylizovaných atributů. Jelikož TypedArray neumožňuje přepisování zdrojů, vyžadují se drobné změny ve vlastním zobrazení:

  • Příklad Kotlina

    Před:

    context.obtainStyledAttributes(attrs, R.styleable.CustomView, defStyleAttr, 0).use {
        text = it.getText(R.styleable.CustomView_android_text)
    }

    Po:

    context.obtainStyledAttributes(attrs, R.styleable.CustomView, defStyleAttr, 0).use {
        text = it.getTextWithPhrase(R.styleable.CustomView_android_text)
    }
  • Příklad Java

    Před:

    final TypedArray ta = context.obtainStyledAttributes(attrs, R.styleable.CustomView, defStyleAttr, 0);
    try {
        setText(ta.getText(R.styleable.CustomView_android_text));
    } finally {
        ta.recycle();
    }

    Po:

    final TypedArray ta = context.obtainStyledAttributes(attrs, R.styleable.CustomView, defStyleAttr, 0);
    try {
        setText(PhraseTypedArray.getTextWithPhrase(ta, R.styleable.CustomView_android_text));
    } finally {
        ta.recycle();
    }

Příklad aplikace

https://github.com/phrase/android-sdk-example

Instalace OTA Flutter SDK

Pomocí SDK aplikace pravidelně kontroluje aktualizované překlady a stahuje je na pozadí.

Požadavky

Tato knihovna závisí na verzi 0.18.0 Flutterovy intl knihovny. Postupujte podle jejich průvodce a přidejte do aplikace podporu lokalizací.

Instalace

Přidat Phrase do souboru pubspec.yaml:

dependencies:
  phrase: ^2.5.1 
  ...
  intl: ^0.18.0
  flutter_localizations:
    sdk: flutter
  ...

flutter:
  generate: true
  ...

Stejně jako v intl knihovně se generování kódu používá ke zpracování souborů ARB. Spuštěním tohoto příkazu aktualizujte:

flutter pub run phrase

Použití build_runner:

flutter pub run build_runner watch

Použití

Inicializace Phrase v souboru main.dart:

import 'package:flutter/material.dart';
import 'package:flutter_gen/gen_l10n/app_localizations.dart';
import 'package:flutter_gen/gen_l10n/phrase_localizations.dart';
import 'package:phrase/phrase.dart';

void main() {
  Phrase.setup("[DISTRIBUTION_ID]", "[ENVIRONMENT_ID]");
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      název: 'Flutter Demo',
      //..
      lokalizaceDelegáti: PhraseLocalizations.localizationsDelegates,
      supportedMísta: PhraseLocalizations.supportedLocales,
    );
  }
}

Přístup ke zprávám s:

Text(AppLocalizations.of(context)!.helloWorld);

Přizpůsobení

Aktualizovat chování

Překlady OTA se aktualizují při každém spuštění aplikace. zakázat:

Phrase.setup("[DISTRIBUTION_ID]", "[ENVIRONMENT_ID]", 
    checkForUpdates: false);

Chcete-li aktualizovat ručně:

Phrase.updateTranslations(context).then((_) => print("Done!"));

Vlastní verze aplikace

SDK ve výchozím nastavení používá verzi aplikace k vrácení vydání, které odpovídá omezením vydání pro min a max verzi. Verze aplikace musí použít sémantické verzování, jinak se překlad neaktualizuje. Pokud aplikace nepoužije sémantické verzování, lze verzi aplikace ručně přepsat: je možné ručně přepsat verzi aplikace:

Phrase.setup("[DISTRIBUTION_ID]", "[ENVIRONMENT_ID]",
    customAppVersion: "1.2.3");

Konfigurace datového centra v USA

Datové centrum Phrase US je také podporováno. Datové centrum v USA lze vybrat předáním příslušného parametru názvu hostitele API v konfiguraci SDK:

Phrase.setup("[DISTRIBUTION_ID]", "[ENVIRONMENT_ID]", host: PhraseHost.us);

Příklad aplikace

https://github.com/phrase/flutter_sdk_example

Instalace OTA iOS

Pomocí SDK aplikace pravidelně kontroluje aktualizované překlady a stahuje je na pozadí.

Zařízení Mac Catalyst je také podporované.

SDK lze nainstalovat ručně nebo prostřednictvím Swift Package Manager, Carthage nebo Cocoa Pods.

Pokud se překlady neaktualizují:

  • Zkontrolujte ID distribuce a tajnost prostředí.

  • Ujistěte se, že bylo vytvořeno vydání pro aktuální verzi aplikace.

  • Znovu načtěte ViewController, aby se změny zobrazily okamžitě.

Pokud používáte nesprávnou verzi překladu, zajistěte, aby bylo k dispozici vydání s nejnovějšími překlady a aktuální verzí aplikace.

Swift Package Manager

Přidat URL veřejného úložiště (https://github.com/Phrase/ios-sdk/). Xcode se automaticky postará o zbytek instalace.

Kartágo

Přidejte do košíku následující řádek:

binary "https://raw.githubusercontent.com/phrase/ios-sdk/master/PhraseSDK.json" ~> 3.0.0

Spusťte aplikaci Carthage aktualizovat a přidejte do svého projektu PhraseApp.framework podle popisu v dokumentaci aplikace Carthage.

Kakaové lusky

Přidejte do svého Podprofilu následující řádek:

pod 'PhraseSDK'

Spusťte instalaci pod. Pokud jsou CocoaPody nové, podívejte se do jejich dokumentace.

Ruční instalace

Postupujte takto:

  1. Stáhněte si nejnovější vydání.

  2. Přidejte PhraseSDK.framework do Xcode jako propojenou binární verzi k cíli.

  3. Skript pro odebrání dalších binárních souborů je třeba spustit před nahrát aplikace, protože Apple Store odmítá aplikace včetně simulátorových binárních souborů.

    Přejděte do části Budovat fáze a přidejte oddíl Spustit skript kliknutím na symbol +. Vložte do tohoto skriptu:

    FRAMEWORK="PhraseSDK"
    FRAMEWORK_EXECUTABLE_PATH="${BUILT_PRODUCTS_DIR}/${FRAMEWORKS_FOLDER_PATH}/$FRAMEWORK.framework/$FRAMEWORK"
    EXTRACTED_ARCHS=()
    for ARCH in $ARCHS
    do
       lipo -extract "$ARCH" "$FRAMEWORK_EXECUTABLE_PATH" -o "$FRAMEWORK_EXECUTABLE_PATH-$ARCH"
       EXTRACTED_ARCHS+=("$FRAMEWORK_EXECUTABLE_PATH-$ARCH")
    done
    lipo -o "$FRAMEWORK_EXECUTABLE_PATH-merged" -create "${EXTRACTED_ARCHS[@]}"
    rm "${EXTRACTED_ARCHS[@]}"
    rm "$FRAMEWORK_EXECUTABLE_PATH"
    mv "$FRAMEWORK_EXECUTABLE_PATH-merged" "$FRAMEWORK_EXECUTABLE_PATH"

Konfigurace

  1. Import PhraseSDK:

    import PhraseSDK
  2. Inicializace SDK voláním následujícího kódu:

    Phrase.shared.setup(
      distributionID: <Distribution ID>, 
      environmentSecret: <Environment Secret>
    )
  3. Pro aktualizaci lokalizačních souborů volejte Phrase.shared.updateTranslation().

    Tato metoda zvýší výjimku, pokud není SDK správně nastavení.

    Chcete-li nakonfigurovat OTA použít datové centrum v USA, nastavte hostitele před voláním PhraseApp.shared.updateTranslation() s Phrase.shared.configuration.apiHost = .us.

Doporučujeme volat obě funkce v rámci AppDelegate v metodě applementDidFinishLaunchingWithOptions.

Objective-C

Integrujte SDK do aplikace Objective-C:

@import PhraseSDK;

@implementation AppDelegate

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
  [[Phrase shared] setDebugMode:true]; // Optional

  [[Phrase shared] setupWithDistributionID:@"Your Distribution ID"
                         environmentSecret:@"Your Environment Secret"];

  // OR:
  //
  //  [[Phrase shared] setupWithDistributionID:@"Your Distribution ID"
  //                         environmentSecret:@"Your Environment Secret"
  //                                   timeout:10];

  // Update translations using callback block:
  [[Phrase shared] updateTranslationsWithCompletionHandler:^(BOOL updated, NSError* error){
    NSLog(@"Updated: %@", updated ? @"true" : @"false");

    if (error) {
      NSLog(@"Domain: %@ Code: %ld Message: %@", error.domain, (long)error.code, error.localizedDescription);
    } else {
      NSLog(@"No error");
    }

    // Translate via bundle proxy:
    NSString *translation = NSLocalizedString(@"layouts.application.about", @"");
    NSLog(@"NSLocalizedString via bundle proxy: %@", translation);

    // OR:
    //
    // Translate using fallback method:
    NSString *otherTranslation = [[Phrase shared]
                                  localizedStringForKey:@"layouts.application.about" value:NULL table:NULL];
    NSLog(@"Phrase.shared localizedStringForKey: %@", otherTranslation);
  }];

  // OR:
  //
  // [[Phrase shared] updateTranslationsWithCompletionHandler:NULL]; // ignore result and errors (not recommended)

  // [...] Your other code
  
  return YES;
}

Zakázat kroužení

Chcete-li zakázat swizzling, nastavte v souboru Info.plist PhraseSDKMainBundleProxyDisabled na ANO.

Pokud je swizzling vypnuto, aktualizované překlady se již nezobrazují. Překlad se bude synchronizovat i po volání updateTranslation a bude přístupný metodou Phrase.localizedString().

Zpracování verzí aplikace

Chcete-li určit, které vydání by mělo být vráceno, vyžaduje SDK sémantickou verzi aplikace, aby se překlady aktualizovaly.

SDK se pokusí získat sémantickou verzi následujícím způsobem:

  • CFBundleShortVersionString se použije, pokud je sémantický.

  • Pokud ne, použije se CFBundleVersion, pokud je sémantická.

  • Pokud nejsou obě sémantické, použije se kombinace (CFBundleShortVersionString.CFBundleVersion).

Pokud CFBundleShortVersionString chybí nebo ji nelze vytvořit v sémantické verzi společně s CFBundleVersion, SDK vyhodí zprávu PhraseSetupError.appVersionNotSemantic.

Zakázat překlad pro více tabulek

Abyste zabránili OTA v překladu jakýchkoli tabulek v hlavním balíčku iOS kromě výchozí tabulky Localizable, nastavte následující možnost:

Phrase.shared.configuration.ignoreOtherTables = true

Návraty

Připojte callback handler a zpracujte úspěšné aktualizace překladu:

Phrase.shared.updateTranslation { result in
            switch result {
            case .success(let updated):
            case .failure:
            }
        }

Režim ladění

Jsou-li vyžadovány další informace, povolte režim Debug, abyste získali další záznam z PhraseSDK.framework do konzole:

Phrase.shared.configuration.debugMode = true

Nastavit časový limit pro požadavky

Nastavte časový limit pro požadavky proti Phrase voláním:

Phrase.shared.configuration.timeout = TimeInterval(20)

Výchozí časový limit je 10 sekund a spojení trvající déle než 10 sekund budou ukončena.

Zajistit ruční přepsání jazyka

Pokud jako kód jazyka nepoužíváte systémový jazyk, lze v init volání nastavit jiný kód jazyka. Kód jazyka musí být ve vydání z Phrase:

Phrase.shared.configuration.localeOverride = "en-US"

Záložní systém

Pokud nelze z Phrase načíst nové překlady prostřednictvím SDK, použijí se nejnovější překladové soubory, které instalace obdržela. Pokud aplikace nikdy neobdržela nové soubory z Phrase, použije zkompilované překladové soubory aplikace. Zabráníte tak chybám v případě technických potíží nebo chyb v síti. Doporučujeme udržovat překladové soubory zkompilované do aplikace aktuální s každým vydáním.

Audit

SDK je uzavřený zdroj a nelze ho zobrazit ani upravovat. Pokud se jedná o požadavek organizace, lze audity poskytnout. V případě potřeby nás Kontaktujte.

Instalace nativní SDK OTA React

Pomocí SDK aplikace pravidelně kontroluje aktualizované překlady a stahuje je na pozadí.

Knihovna pro překlady OTA pracuje pouze s knihovnou react-i18next.

React Native SDK nainstalujete takto:

  1. Spusťte následující příkaz:

    $ npm install react-native-phrase-sdk --save
  2. Inicializace Phrase:

    import Phrase from "react-native-phrase-sdk";
    
    let phrase = new Phrase(
        "YOUR_DISTRIBUTION_ID",
        "YOUR_DEVELOPMENT_OR_PRODUCTION_SECRET",
        "YOUR_APP_VERSION",
        "i18next"
    );

    Formát souboru může být buď i18next (jako ve výše uvedeném příkladu) nebo i18next_4, což vede k souboru formátu i18next v4.

    Datové centrum Phrase US je také podporováno. Chcete-li použít React Native SDK s datovým centrem v USA, předejte při inicializaci příslušného hostitele:

    import Phrase from "react-native-phrase-sdk";
    
    let phrase = new Phrase(
        "YOUR_DISTRIBUTION_ID",
        "YOUR_DEVELOPMENT_OR_PRODUCTION_SECRET",
        "YOUR_APP_VERSION",
        "i18next",
        host="https://ota.us.phrase.com/"
    );  
    
  3. Vytvořit backend i18next založený na příkladu:

    import resourcesToBackend from "i18next-resources-to-backend";
    
    const backendPhrase = resourcesToBackend((language, namespace, callback) => {
        phrase.requestTranslation(language)
            .then((remoteResources) => {
                callback(null, remoteResources);
            })
            .catch((error) => {
                callback(error, null);
            });
    });
    
    const backendFallback = resourcesToBackend(localResources)
  4. Inicializace i18n pomocí Phrase backendu:

    i18n
      .use(ChainedBackend)
      .use(initReactI18next)
      .init({
        backend: {
            backends: [backendPhrase, backendFallback]
        }
        //...
      });

Vzorový soubor i18next.js

import i18n from "i18next";
import { initReactI18next } from "react-i18next";
import ChainedBackend from "i18next-chained-backend";
import resourcesToBackend from "i18next-resources-to-backend";
import translationEN from "./locales/en/translation.json";
import translationRU from "./locales/ru/translation.json";
import Phrase from "react-native-phrase-sdk";

const localResources = {
  en: {
    translation: translationEN,
  },
  ru: {
    translation: translationRU,
  },
};

let phrase = new Phrase(
    "YOUR_DISTRIBUTION_ID",
    "YOUR_ENVIRONMENT_ID",
    require('./package.json').version,
    "i18next"
);

const backendPhrase = resourcesToBackend((language, namespace, callback) => {
    phrase.requestTranslation(language)
        .then((remoteResources) => {
            callback(null, remoteResources);
        })
        .catch((error) => {
            callback(error, null);
        });
});

const backendFallback = resourcesToBackend(localResources)

i18n
  .use(ChainedBackend)
  .use(initReactI18next)
  .init({
    backend: {
        backends: [backendPhrase, backendFallback]
    },
    debug: true,
    lng: "en",
    fallbackLng: "en",
    interpolation: {
      escapeValue: false, // not needed for react as it escapes by default
    }
  });

Příklad aplikace

https://github.com/phrase/react_native_sdk_example

Instalace backendu OTA i18next

Knihovna i18next-Phrase-backend implementuje vzorový backend pro i18next, který načítá překlady z vydání OTA.

Chcete-li vytvořit nové vydání, musí být platforma i18next nastavena pro distribuci a být součástí vydání.

Použití

Pro spuštění Phrase:

import i18n from "i18next";
import { I18nextPhraseBackend } from "@phrase/i18next-backend";

i18n
  .use(I18nextPhraseBackend)
  .init({
    fallbackLng: 'en',
    backend: {
      distribuce: 'DISTRIBUTION_ID',
      secret: 'YOUR_ENVIRONMENT_SECRET',
      appVersion: '1.0.0',
    }
  });

Caching

Knihovna ukládá překlady do mezipaměti a nové překlady nebude kontrolovat po dobu 5 minut. Caching lze nakonfigurovat nastavením volby cacheExpirationTime v konfiguraci backendu pro testovací účely.

i18n
  .use(I18nextPhraseBackend)
  .init({
    fallbackLng: 'en',
    backend: {
      distribuce: 'DISTRIBUTION_ID',
      secret: 'YOUR_ENVIRONMENT_SECRET',
      appVersion: '1.0.0',
      cacheExpirationTime: 60 * 5, // čas v sekundách
    }
  });

Poznámka

V produkčním prostředí se doporučuje použít alespoň 5 minut kešování.

Příklad aplikace

https://github.com/phrase/ota-web-demo

Záložní instalace OTA Rails

Knihovna Phrase-OTA-i18n implementuje příklad backendu pro drahokam I18n, který načítá překlady z vydání OTA. Pomocí knihovny aplikace pravidelně kontroluje aktualizované překlady a stahuje je na pozadí.

Knihovna je platná pro libovolnou aplikaci Ruby používající drahokam i18n.

Chcete-li vytvořit nové vydání, musí být platforma Rails nastavena pro distribuci a být součástí vydání.

Instalace

  1. Přidejte následující řádek do Gemfile aplikace:

    gem 'phrase-ota-i18n'
  2. Provést:

    $ bundle install
  3. Jinou možností je instalace jako:

    $ gem install phrase-ota-i18n

Použití

Pro vygenerování konfigurace:

bundle exec rails generate phrase_ota:install --distribution-id <DISTRIBUTION_ID> --secret-token <SECRET>

Ladění

Drahokam má konfiguraci Debug, kterou lze v inicializátoru povolit nastavením:

config.debug = true
Byl pro vás tento článek užitečný?

Sorry about that! In what way was it not helpful?

The article didn’t address my problem.
I couldn’t understand the article.
The feature doesn’t do what I need.
Other reason.

Note that feedback is provided anonymously so we aren't able to reply to questions.
If you'd like to ask a question, submit a request to our Support team.
Thank you for your feedback.