Správa překladů

Over the Air (Strings)

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

Aktualizace over-the-air (OTA) nabízejí flexibilní způsob, jak odevzdat aktualizace překladů do mobilních a webových aplikací, aniž by bylo nutné nové vydání v App Store, Google Play nebo na jiné nasazovací platformy. Tento přístup podporuje průběžnou lokalizaci a agilní vývojové pracovní postupy snížením počtu prodlev a ručních procesů.

OTA funkce ve Phrase Strings je integrovaná s platformami iOS, Android, React Native, Flutter, i18next a Rails. Aktualizace textových štítků se okamžitě přenášejí do mobilních aplikací.

OTA_user_device_diagram.png

Objednávku použití aktualizovaného nastavení je třeba vytvořit nové vydání. Veškerý obsah z 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 doručeny.

Pro mobilní aplikace OTA vyžaduje integraci příslušné sady pro vývoj softwaru (SDK) do aplikace a získávání překladů z Phrase Strings za běhu.

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 určité časové období. Nepoužívá se pro žádnou jinou formu ani způsob sledování a neobsahuje žádné informace o uživateli ani zařízení.

Jediným limitem pro OTA je počet aktivních uživatelů za měsíc (MAU), v závislosti na zvolené cenové edici.

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

Data odeslaná s požadavky OTA

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". Jedinečný 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)

  • Tajné prostředí (rozlišit vývoj od výroby)

OTA Distribuce

Distribuce jsou nakonfigurované nastavení, které definuje, jak a kde se aktualizace OTA pro konkrétní platformu nebo projekt doručují.

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 distribuce jedna 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í řešení

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

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

Vytvořit distribuci

Distribuci vytvoříte takto:

  1. V Boxu Over the air (OTA) na stránce Integrace klikněte na možnost Konfigurace nebo počet konfigurací, pokud už nějaké existují.

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

  2. Klikněte na Novou distribuci. 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 určeného k připojení k distribuci se zobrazí záložka Naplánování. V případě potřeby použijte tuto záložku k nastavení plánovaných vydání OTA v distribuci.

  4. V 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ů. Povolit tuto možnost pouze při práci s rozšířeným pracovním postupem.

  6. Klikněte na Uložit.

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

OTA vydává

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 na Přidat vydání vedle požadované distribuce.

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

  2. Uveďte popis, požadovanou platformu, větev, místní nastavení a verzi aplikace.

    V případě potřeby zadejte tags, které budou 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 opakující se harmonogramy 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 požadované pracovní dny pro naplánovaná vydání.

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

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

    • Pole Větev se zobrazí jen 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 v polích Min version a Max version.

    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 harmonogramu 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.

Reporty OTA Mobile SDK a webové knihovny

Integrace vhodné mobilní SDK nebo webové knihovny umožňuje aktualizovat překlady jedním kliknutím, ale také poskytuje metriky pro měření využití. Mobilní SDK a webová knihovna poskytují cenný přehled o aktivních uživatelích aplikací a jejich jazycích. Tato sada zpráv je k dispozici pro každou distribuci a data se obnovují dvakrát denně.

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

K reportům pro každou distribuci se dostanete přes ikonu 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 správnost ID distribuce a secret prostředí.

  • Zkontrolujte, zda bylo vydání vytvořeno pro aktuální verzi aplikace.

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

Pokud používáte nesprávnou verzi překladu, ujistěte se, že vydání obsahuje nejnovější překlady, že je k dispozici aktuální verze aplikace a je nastaven versionName pro aplikaci a že 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 appcompatu, zvažte použití SDK verze 2.1.3

  • Knihovna podporuje zpětně kompatibilní prvky uživatelského rozhraní, jako je panel nástrojů, a závisí na systému AndroidX.

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

Pokud chcete povolit podporu Jetpack Compose pro překlady z OTA, postupujte takto:

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

  2. Kód složíte 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 aplikace by měly přepsat atchBaseContext 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 jako obvykle použít 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 tom 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

  • Ostatní podporované možnosti protokolování

    • None

    • Error

    • Warning

    • Info

    • Debug

    • Verbose

Změnit jazyk

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

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

Vlastní verze aplikace

SDK používá verzi aplikace ve výchozím nastavení k vrácení vydání, které odpovídá omezením 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ě nahradit.

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 takto:

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

Aktualizovat callback

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 spustit také ručně. Nově načtené překlady se zobrazí při Další spuštění aplikace.

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

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

Podporováno je i datové centrum Phrase US. Datové centrum v USA lze nakonfigurovat voláním:

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

Záložní systém

Pokud se Phrase nemůže dovolat z důvodu chybějícího síťového připojení klienta nebo přerušení služby, použije SDK překlady ze zdrojového souboru. Doporučuje se 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žije se, dokud se Další překlad neaktualizuje.

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

Přidat nový jazyk

Vytvořte nový jazyk ve Phrase a vytvořte 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. Jinak uživatelé uvidí při prvním spuštění aplikace pouze záložní překlady určené systémem Android.

Auditování

SDK je uzavřený zdroj a nelze jej zobrazovat ani upravovat. Pokud se jedná o požadavek organizace, lze audity poskytnout. Pro podrobnější informace nás Kontaktujte.

Podpora vlastního zobrazení

Vlastní zobrazení lze překládat pomocí stylizovaných atributů. Jelikož TypedArray neumožňuje přepsání zdrojů, je třeba provést 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();
    }

Vzorová 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 je závislá na verzi intl knihovny Flutter 0.18.0. Pokud chcete do aplikace přidat podporu lokalizací, postupujte podle jejich průvodce.

Instalace

Přidat Phrase do pubspec.yaml:

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

flutter:
  generate: true
  ...

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

flutter pub run phrase

Pomocí build_runner:

flutter pub run build_runner watch

Použití

Spusťte 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,
      supportedLocales: 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. Chcete-li 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 používá verzi aplikace ve výchozím nastavení k vrácení vydání, které odpovídá omezením 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 nahradit ručně:

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

Konfigurace datového centra v USA

Podporováno je i datové centrum Phrase US. Datové centrum v USA lze vybrat zadáním příslušného parametru API hostname v konfiguraci SDK:

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

Vzorová aplikace

https://github.com/phrase/flutter_sdk_example

Instalace OTA iOS

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

Podporovaný je i Mac Catalyst.

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

Pokud se překlady neaktualizují:

  • Zkontrolujte správnost ID distribuce a secret prostředí.

  • Zkontrolujte, zda bylo vydání vytvořeno pro aktuální verzi aplikace.

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

Pokud používáte nesprávnou verzi překladu, zajistěte, aby byly k dispozici nejnovější překlady a aktuální verze aplikace.

Swift Správce balíčků

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 aktualizaci Kartága a přidejte do svého projektu PhraseApp.framework, jak je popsáno v dokumentaci Kartága.

Kakaové lusky

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

pod 'PhraseSDK'

Spusťte instalaci pod. Pokud jste s CocoaPody noví, přečtěte si jejich dokumentaci.

Ruční instalace

Postupujte takto:

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

  2. Přidejte PhraseSDK.framework do Xcode jako propojený binární soubor s cílem.

  3. Před nahrát aplikace je třeba spustit skript na odebrání dodatečných binárních souborů, protože Apple Store odmítá aplikace včetně simulátorových binárních souborů.

    Přejděte do části Vytvářet fáze a přidejte oddíl Spustit skript kliknutím na symbol +. Vložte do 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. SDK spustíte voláním následujícího kódu:

    Phrase.shared.setup(
      distributionID: <Distribution ID>, 
      environmentSecret: <Environment Secret>
    )
  3. Chcete-li aktualizovat soubory s lokalizací, volejte Phrase.shared.updateTranslation().

    Tato metoda vyvolá výjimku v případě, že SDK nemá správné nastavení.

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

Doporučuje se volat obě funkce v AppDelegate v metodě appplicationDidFinishLaunchingWithOptions.

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 swizzling

Swizzling zakážete nastavením PhraseSDKMainBundleProxyDisabled na ANO v souboru Info.plist.

Pokud je swizzling zakázán, aktualizované překlady se již nezobrazují. Synchronizuje se i po vyvolání updateTranslation a je k dispozici metoda Phrase.localizedString().

Zpracování verzí aplikace

K určení vydání, které se má vrátit, vyžaduje SDK sémantickou verzi aplikace, takže se překlady aktualizují.

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ě hodnoty sémantické, použije se kombinace (CFBundleShortVersionString.CFBundleVersion).

Pokud CFBundleShortVersionString chybí nebo jej nelze vytvořit se sémantickou verzí 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 jiné tabulky v hlavním balíčku iOS než výchozí tabulky Localizable, nastavte následující možnost:

Phrase.shared.configuration.ignoreOtherTables = true

Zpětné volání

Připojte callback handler, abyste mohli úspěšně aktualizovat překlad:

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

Režim ladění

Vyžadují-li další informace, povolte režim Debugu, aby se do konzole znovu přihlašoval soubor PhraseSDK.framework:

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í, která trvají déle než 10 sekund, budou zruš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 od Phrase nikdy neobdržela nové soubory, použije zkompilované překladové soubory aplikace. Předejdete tak chybám v případě technických potíží nebo chyb v síti. Doporučujeme aktualizovat překladové soubory zkompilované do aplikace vždy po vydání.

Auditování

SDK je uzavřený zdroj a nelze jej zobrazovat ani upravovat. Pokud se jedná o požadavek organizace, lze audity poskytnout. Pro podrobnější informace 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 z OTA pracuje pouze s knihovnou react-i18next.

K instalaci React Native SDK postupujte takto:

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

    $ npm install react-native-phrase-sdk --save
  2. Spusťte 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ž povede k vytvoření souboru ve formátu i18next v4.

    Podporováno je také datové centrum Phrase US. Chcete-li použít nativní SDK React s datovým centrem v USA, předejte při spouštění příslušný hostitel:

    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řte i18next backend například na základě:

    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. Spusťte 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
    }
  });

Vzorová 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 musí být součástí vydání.

Použití

Ke 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',
    }
  });

Ukládání do mezipaměti

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

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 dobu cachování alespoň 5 minut.

Vzorová aplikace

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

Záložní instalace OTA Rails

Knihovna Phrase-ota-i18n implementuje vzorový backend pro drahokam I18n, který načítá překlady z vydání OTA. Aplikace v knihovně 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 musí být součástí vydání.

Instalace

  1. Do Gemfile aplikace přidejte následující řádek:

    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.