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í.
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)
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:
-
V Konfigurace nebo počet konfigurací, pokud již existují.
Box na stránce klikněte na tlačítkoOtevře se stránka
a zobrazí stávající konfigurace. -
Klikněte na Nová distribuce. Otevře se okno .
-
V záložce Obecné zadejte , ke kterému je distribuce přiřazena, požadované a požadované .
-
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.
-
-
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.
-
Případně klikněte na záložku Překlady a vyberte možnost použít poslední zkontrolovanou verzi překladů.
-
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
.
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:
-
Na stránce Over the air klikněte vedle požadované distribuce na Přidat vydání.
Otevře se okno
. -
Uveďte
, požadovanou , , a .V případě potřeby zadejte tags, které mají ve vydání obsahovat pouze klíče s konkrétními tags.
-
Klikněte na Uložit.
Vydání je přidáno do seznamu v dolní části stránky s podrobnostmi o distribuci.
Chcete-li nastavit opakované plány vydání distribuce, postupujte takto:
-
Na stránce
klikněte na ikonuozubeného kola vedle požadované distribuce.
Zobrazí se okno
. -
Vyberte záložku Naplánovat vydání a klikněte na .
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.
-
Z rozevíracího seznamu
vyberte frekvenci vydání výběrem jedné z dostupných možností:-
-
Vyberte pro naplánovaná vydání dny pracovního klidu.
-
-
Zadejte čas a příslušné
. -
V případě potřeby vyberte pro plánovaná vydání
, a .-
Pole
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ů.
-
-
Případně zadejte verze aplikace do polí
a .Pokud chcete použít vydání harmonogramu pro všechny verze aplikace, pole nevyplňujte.
-
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ží.
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 na stránce .
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:
-
Přidejte knihovní
implementaci "com.phrase.android:ota-sdk-compose:3.5.0"
do kořenovéhobuild.gradle
. -
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
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
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:
-
Stáhněte si nejnovější vydání.
-
Přidejte
PhraseSDK.framework
do Xcode jako propojenou binární verzi k cíli. -
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
a přidejte oddíl 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
-
Import PhraseSDK:
import PhraseSDK
-
Inicializace SDK voláním následujícího kódu:
Phrase.shared.setup( distributionID: <Distribution ID>, environmentSecret: <Environment Secret> )
-
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()
sPhrase.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.
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:
-
Spusťte následující příkaz:
$ npm install react-native-phrase-sdk --save
-
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) neboi18next_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/" );
-
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)
-
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
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
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
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
nastavena pro distribuci a být součástí vydání.Instalace
-
Přidejte následující řádek do Gemfile aplikace:
gem 'phrase-ota-i18n'
-
Provést:
$ bundle install
-
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