Integrace

In-Context Editor (Strings)

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

K dispozici pro

  • Team, Professional, Business, Enterprise a Software UI/UX.

S dotazy ohledně licencí se obraťte na prodejní oddělení.

K dispozici pro

  • Edice Advanced a Enterprise (starší)

S dotazy ohledně licencí se obraťte na prodejce.

In-Context editor je navržen tak, aby pomáhal překladatelům pracovat efektivněji a překládat webové stránky díky přímé integraci se Strings editorem překladů.

V současné době jsou k dispozici dvě verze:

  1. In-Context editor:

    Zahrnuje nové funkce (vícejazyčné zobrazení, možnosti rozvržení, dávkové akce, funkce pro spolupráci atd.) a uživatelské rozhraní z editoru překladů.

  2. starý In-Context editor.

Po instalaci lze In-Context editor přizpůsobit pro práci s mnoha technologiemi.

Instalace In-Context editoru Strings

Požadavky

K používání In-Context editoru aplikace vyžaduje:

  • Webové stránky, webové aplikace, mobilní weby atd.

  • Překladatelé mají přístup k webovému serveru, na kterém editor běží. V případě potřeby se může jednat o lokální prostředí.

  • Struktura lokalizačního souboru typu klíč-hodnota.

    Webové stránky s extrahovanými přeložitelnými řetězci a vrstvou zobrazení, která k vykreslení překladů používá strukturu klíč-hodnota.

  • Názvy klíčů vystavené vrstvě zobrazení nebo šablony.

  • Úryvek JavaScriptu, který editor vykresluje.

  • Ideálně vyhrazené prostředí pro překlady. Může se jednat o klon stagingového prostředí, a i když je počáteční nastavení náročnější, poskytuje lepší pracovní postup a vyšší stabilitu.

    Pokud vyhrazené prostředí není možné, lze použít stávající stagingové prostředí s možností aktivovat In-Context Editor podle potřeby.

Úryvek JavaScriptu

Zahrňte JavaScriptový fragment do rozvržení aplikace.

Fragment obsahuje kód potřebný k:

  • Komunikaci s Phrase Strings API.

  • Vykreslení uživatelského rozhraní.

  • Poskytnutí přihlášení.

ID projektu naleznete v nastavení projektu.

ID účtu naleznete v nastavení organizace Strings.

Vzorek:

<script type="text/javascript">
    window.PHRASEAPP_CONFIG={ // Do not change this name for the config to work
      accountId: ID ÚČTU
      projectId: PROJECT.ID
      datacenter: 'eu', // Set to 'us' for US data center
      prefix: '{{__', // Set to the prefix for the key format in the view templates
      suffix: '__}}', // Set to the suffix for the key format in the view templates
      disableShortcuts: false, // Set to true to disable keyboard shortcuts
      autoLowercase: true, // Set to false if keys contain capital letters
    {
  </script>
  <script type=\"module\" async=\"\" src=\"https://cdn.phrase.com/strings/plugins/editor/latest/ice/index.js\"></script>

Instalace webových frameworků

i18next

Poznámka

Postprocesor i18next Phrase In-Context Editor podporuje všechny verze i18next novější než 19.5.1. Ačkoliv tato knihovna může fungovat i s předchozími verzemi, nejsou oficiálně podporovány a nemusí pro ně být dostupné žádné konkrétní aktualizace ani opravy chyb.

Chcete-li nainstalovat editor In-Context v tomto prostředí, postupujte podle těchto kroků:

  1. Nainstalujte knihovnu i18next-phrase-in-context-editor-post-processor s preferovaným správcem balíčků:

    # yarn
    yarn add i18next-phrase-in-context-editor-post-processor
    
    # npm
    npm install i18next-phrase-in-context-editor-post-processor

    Poznámka

    Doporučené verze této knihovny jsou 1.4.0 nebo novější.

    nebo ji načtěte prostřednictvím CDN:

    <script src="https://unpkg.com/i18next-phrase-in-context-editor-post-processor"></script>
  2. Bootstrap (příklad):

    import i18next from 'i18next';
    import i18nextXHRBackend from 'i18next-xhr-backend';
    
    i18next
        .use(i18nextXHRBackend)
        .init({
            fallbackLng: 'en',
            debug: true,
            ns: ['special', 'common'],
            defaultNS: 'special',
            backend: {
                // load some translations from i18next-gitbook repo
                loadPath: 'https://raw.githubusercontent.com/i18next/i18next-gitbook/master/locales/{{lng}}/{{ns}}.json',
                crossDomain: true
            }
        }, function(err, t) {
            // do something on i18next initialization
        });

    Chcete-li knihovnu integrovat:

    1. Importujte PhraseInContextEditorPostProcessor z knihovny i18next-phrase-in-context-editor-post-processor.

    2. Vytvořte novou instanci i18next Phrase In-Context Editor Post Processor a předejte jí PhraseConfig jako argument.

    3. Nově vytvořenou instanci i18next Phrase In-Context Editor Post Processor předejte metodě i18next use.

    4. Přidejte řetězec phraseInContextEditor do pole postProcess (v konfiguračním objektu metody i18next init).

  3. Přidejte JavaScriptový snippet ICE do instance i18next v nastavení.

    Ukázkový úryvek:

    i18nextInstance.use(new PhraseInContextEditorPostProcessor({
          phraseEnabled: true,
          projectId: '00000000000000004158e0858d2fa45c',
          accountId: '0bed59e5',
        {

    Poznámka

    Pro úspěšné nastavení ICE musí být poskytnuto accountId. ID účtu najdete v nastavení organizace Strings.

    Pokud je to potřeba, nakonfigurujte atribut useOldICE pro přepnutí na starý ICE:

    i18nextInstance.use(new PhraseInContextEditorPostProcessor({
          phraseEnabled: true,
          projectId: '00000000000000004158e0858d2fa45c',
          accountId: '0bed59e5',
          useOldICE: true,
        {
  4. Spusťte editor In-Context.

  5. Otevřete aplikaci ve webovém prohlížeči pro zobrazení editoru In-Context. Přihlaste se jako libovolný uživatel organizace Phrase.

Možnosti konfigurace a ukázkové metody.

Vue I18n

Poznámka

Vue I18n Phrase In-Context Editor podporuje všechny verze Vue I18n 8.17.5 a novější. Tato knihovna může fungovat s předchozími verzemi, ale ty nejsou oficiálně podporovány a nebudou dostávat žádné specifické aktualizace ani opravy chyb.

Chcete-li nainstalovat editor In-Context v tomto prostředí, postupujte podle těchto kroků:

  1. Nainstalujte nejnovější balíček pomocí preferovaného správce balíčků:

    # yarn
    yarn add vue-i18n-phrase-in-context-editor
    
    # npm
    npm install vue-i18n-phrase-in-context-editor

    nebo načtěte pomocí CDN (zaregistrujte ručně window['vue-i18n-phrase-in-context-editor'] ):

    <script src="https://unpkg.com/vue-i18n-phrase-in-context-editor/dist/vue-i18n-phrase-in-context-editor.umd.min.js"></script>
    
  2. Bootstrap (ukázka):

    import Vue from 'vue';
    import VueI18n from 'vue-i18n';
    
    Vue.use(VueI18n);
    
    const i18n = new VueI18n({
      locale: process.env.VUE_APP_I18N_LOCALE || 'en',
      fallbackLocale: process.env.VUE_APP_I18N_FALLBACK_LOCALE || 'en',
      messages: {
          "hello": { "hello" : "World",
      }
    });
    
    new Vue({
      i18n,
      render: h => h(App)
    }).$mount('#app');

    Pro integraci knihovny:

    1. Importujte knihovnu Vue I18n Phrase In-Context Editor.

    2. Vytvořte novou instanci Vue I18n Phrase In-Context Editor, předejte instanci Vue I18n jako první argument a Phrase Config jako druhý.

Možnosti konfigurace a ukázkové metody.

React (intl)

Poznámka

Tato knihovna nemusí fungovat v IE11 nebo starších prohlížečích. Pokud je vyžadována podpora starších prohlížečů, přidejte do sestavovacího procesu Babel.

Tato knihovna dědí běžné komponenty balíčků react-intl. Pokud je Phrase povoleno voláním initializePhraseAppEditor, chování komponent se změní.

Chcete-li nainstalovat editor In-Context v tomto prostředí, postupujte podle těchto kroků:

  1. Nainstalujte nejnovější balíček přes NPM:

    npm install react-intl-phraseapp

    nebo sestavte ze zdrojového kódu:

    npm run dist
    npm install
  2. Konfigurovat

    let config = {
      projectId: '<YOUR_PROJECT_ID>',
      accountId: '<YOUR_ACCOUNT_ID>',
      phraseEnabled: true,
      prefix: "[[__",
      suffix: "__]]",
      fullReparse: true
    {

    ID projektu naleznete v nastavení projektu.

    ID účtu naleznete v nastavení organizace Strings.

  3. Přidejte úryvek kódu do aplikace React:

    import {initializePhraseAppEditor} from 'react-intl-phraseapp'
    
    let config = {
      projectId: '<YOUR_PROJECT_ID>',
      accountId: '<YOUR_ACCOUNT_ID>',
      phraseEnabled: true,
      prefix: "[[__",
      suffix: "__]]",
      fullReparse: true
    {
    
    initializePhraseAppEditor(config);
  4. Najděte všechny importy FormattedMessage a změňte zdroj z react-intl na react-intl-phraseapp.

    import {FormattedMessage} from 'react-intl-phraseapp'
  5. Spusťte jednotkové testy pomocí jest:

    npm test
Vzor kódu

Tato ukázka ukazuje integraci editoru Phrase In-Context s react-intl.

Angular 2 (ngx-translate)

Předpoklady

Chcete-li nainstalovat editor In-Context v tomto prostředí, postupujte podle těchto kroků:

  1. Nainstalujte pomocí NPM:

    npm install ngx-translate-phraseapp
  2. Konfigurovat

    import { initializePhraseAppEditor, PhraseConfig } from 'ngx-translate-phraseapp';
    
    let config = { PhraseConfig = {
      projectId: '<YOUR_PROJECT_ID>',
      accountID: '<YOUR_ACCOUNT_ID>'
      phraseEnabled: true,
    {

    ID projektu naleznete v nastavení projektu.

    ID účtu najdete v nastavení organizace Strings.

    V případě potřeby nakonfigurujte atribut useOldICE pro přepnutí na starý ICE:

    let config = {
      projectId: '<YOUR_PROJECT_ID>',
      accountID: '<YOUR_ACCOUNT_ID>',
      phraseEnabled: true,
      useOldICE: true,
    {
    
    initializePhraseAppEditor(config);

    V případě potřeby přidejte adresy URL specifické pro USA, abyste umožnili práci prostřednictvím datového centra v USA:

    baseUrl: "https://us.app.phrase.com",
    apiBaseUrl: 'https://api.us.app.phrase.com/api/v2',
    oauthEndpointUrl: "https://api.us.app.phrase.com/api/v2/authorizations",
    profileUrl: "https://us.app.phrase.com/settings/profile",
  3. Ve výchozím nastavení převádí analyzátor dokumentů editoru všechny klíče na malá písmena. Pokud máte s tímto chováním problémy a chcete v editoru používat klíče rozlišující velká a malá písmena, vypněte funkci automatického převodu na malá písmena:

    let config = {
      {
      autoLowercase: false
    }
  4. Přidejte tyto úryvky do aplikace Angular:

    app.component.ts

    import { initializePhraseAppEditor, PhraseAppCompiler, PhraseConfig} from 'ngx-translate-phraseapp'
    
    let config = { PhraseConfig = {
      projectId: '<YOUR_PROJECT_ID>',
      accountID: '<YOUR_ACCOUNT_ID>'
      phraseEnabled: true,
    {
    
    initializePhraseAppEditor(config);

    app.module.ts

    import { TranslateModule, TranslateLoader, TranslateCompiler } from '@ngx-translate/core';
    import { HttpClientModule, HttpClient } from '@angular/common/http';
    import { PhraseAppCompiler } from 'ngx-translate-phraseapp'
    import { AppComponent } from './app.component';
    
    
    export function HttpLoaderFactory(http: HttpClient) {
      return new TranslateHttpLoader(http);
    }
    
    @NgModule({
      declarations: [
        AppComponent
      {
      imports: [
        BrowserModule,
        HttpClientModule,
        TranslateModule.forRoot({
          loader: {
            Uveďte: TranslateLoader,
            useFactory: HttpLoaderFactory,
            deps: [HttpClient]
          },
          compiler: {
            Uveďte: TranslateCompiler,
            useClass: PhraseAppCompiler
          }
        {
      {
      providers: [],
      bootstrap: [AppComponent]
    })
Vzor kódu

Tato demo aplikace představuje integraci editoru In-Context s Angular a ngx-translate.

Ruby on Rails (i18n)

Poznámka

Tato knihovna nemusí fungovat ihned po instalaci ve starších prohlížečích nebo v Microsoft IE11. Přidejte Babel do sestavovacího kanálu, pokud je třeba tyto prohlížeče podporovat.

Předpoklady

Chcete-li nainstalovat editor In-Context v tomto prostředí, postupujte podle těchto kroků:

  1. Přidejte knihovnu phraseapp-in-context-editor-ruby do požadovaného prostředí pomocí jedné z následujících metod:

    • Přes Gem

      gem install phraseapp-in-context-editor-ruby
    • Přes Bundler

      Přidejte jej do souboru Gemfile:

      gem 'phraseapp-in-context-editor-ruby
    • Sestavte přímo ze zdrojového kódu, abyste získali to nejnovější a nejlepší:

      bundle && gem build
  2. Vytvořte inicializační soubor spuštěním generátoru Rails:

    rails generate phraseapp_in_context_editor:install --account_id=<YOUR_ACCOUNT_ID> --project-id=<YOUR_PROJECT_ID>

    ID projektu najdete v nastavení projektu.

    ID účtu najdete v nastavení organizace Strings.

  3. Přidejte úryvek kódu Ruby do rozvržení aplikace app/views//layouts/application.html.erb:

    <%= load_in_context_editor %>
  4. Přidejte následující konfiguraci do inicializačního souboru /config/initializers/phraseapp_in_context_editor.rb:

      config.enabled = true
      config.project_id = "YOUR_PROJECT_ID"
      config.account_id = "YOUR_ACCOUNT_ID"
      config.datacenter = "eu"

    V případě potřeby nastavte datové centrum v USA, abyste umožnili práci s koncovými body v USA:

      config.enabled = true
      config.project_id = "YOUR_PROJECT_ID"
      config.account_id = "YOUR_ACCOUNT_ID"
      config.datacenter = "us"
  5. Otevřete aplikaci v libovolném webovém prohlížeči a uvidíte editor In-Context použitý v aplikaci. Přihlaste se pomocí libovolného uživatele organizace Phrase.

Vzor kódu

Tato ukázka ukazuje integraci editoru Phrase In-Context s react-i18next.

Django

Předpoklady

Poznámka

Stará verze ICE není od verze 2.0.0 k dispozici.

Chcete-li nainstalovat editor In-Context v tomto prostředí, postupujte podle těchto kroků:

  1. Nainstalujte balíček django-phrase pomocí pip:

    $ pip install django-phrase
  2. Přidejte Phrase do seznamu nainstalovaných aplikací:

    INSTALLED_APPS = (
    
        'phrase',
    
    )
  3. Přidejte následující úryvky šablon do souboru rozvržení templates/base_generic.html nebo ekvivalentu:

    {% load phrase_i18n %}
    {% phrase_javascript %}
  4. Použijte značku šablony phrase_i18n v šablonách (například demo/ice_demo/templates/index.html):

    {% load phrase_i18n %}
  5. Přidejte následující konfiguraci do settings.py:

        # Phrase In-Context Editor settings
        PHRASE_ENABLED = True
        PHRASE_ACCOUNT_ID = "YOUR_ACCOUNT_ID"  # Set your own account id
        PHRASE_PROJECT_ID = "YOUR_PROJECT_ID"  # Set your own project id
        PHRASE_DATACENTER = "eu"  # Choose your datacenter 'eu' | 'us'
        PHRASE_PREFIX = "{{__"
        PHRASE_SUFFIX = "__}}"

    ID projektu naleznete v nastavení projektu.

    ID účtu naleznete v nastavení organizace Strings.

    V případě problémů je možné ručně integrovat JavaScriptový úryvek.

  6. Otevřete aplikaci v libovolném webovém prohlížeči a uvidíte editor In-Context použitý v aplikaci. Přihlaste se pomocí libovolného uživatele organizace Phrase.

Kód adaptéru Django na GitHubu

Vzor kódu

Tato demo aplikace demonstruje, jak integrovat editor In-Context s aplikací Django.

Flask

Předpoklady

Poznámka

Stará verze ICE není od verze 2.0.0 k dispozici.

Chcete-li nainstalovat editor In-Context v tomto prostředí, postupujte podle těchto kroků:

  1. Nainstalujte balíček Flask-Phrase pomocí pip:

    pip install Flask-Phrase
  2. Přidejte následující konfiguraci do aplikace Flask (app.config nebo config.py):

    PHRASEAPP_ENABLED = True
    PHRASEAPP_PREFIX = '{{__'
    PHRASEAPP_SUFFIX = '__}}'

    Kód aplikace by měl vypadat podobně jako tento:

    from flask import Flask, [...]
    from flask_babel import Babel
    from flask_phrase import Phrase, gettext, ngettext
    app = Flask(__name__)
    babel = Babel(app)
    phrase = Phrase(app)
  3. Přidejte Phrase JavaScriptový úryvek do souboru základního rozvržení pomocí následující značky (měla by být umístěna uvnitř sekce souboru šablony):

    <script>
        window.PHRASEAPP_CONFIG = {
            projectId: "VAŠE-ID-PROJEKTU",
            accountId: "VAŠE-ID-ÚČTU",
            datacenter: "eu",
        {
        (function() {
            var phrasejs = document.createElement('script');
            phrasejs.type = 'module';
            phrasejs.async = true;
            phrasejs.src = 'https://cdn.phrase.com/latest/ice/index.js'
            var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(phrasejs, s);
        {
    </script>

    ID projektu najdete v nastavení projektu.

    ID účtu najdete v nastavení organizace Strings.

    V případě potřeby nastavte datové centrum v USA, abyste umožnili práci s koncovými body v USA:

    window.PHRASEAPP_CONFIG = {
        projectId: "VAŠE-ID-PROJEKTU",
        accountId: "VAŠE-ID-ÚČTU",
        datacenter: "us",
    {

Když je PHRASEAPP_ENABLED = True, balíček upraví vrácené hodnoty z překladových funkcí tak, aby prezentovaly formát, který ICE dokáže přečíst. Při nastavení na False se vrátí ke standardním funkcím gettext Flask-Babel.

Vzor kódu

Tato demo aplikace demonstruje, jak integrovat editor In-Context s aplikací Flask.

Symfony 5.x

Předpoklady

Poznámka

Verze 2.0.0 podporuje Symfony 5 a vyšší. Pokud používáte Symfony 2, 3 nebo 4, podívejte se na starou verzi ICE.

Pro integraci In-Context editoru s aplikací Symfony postupujte podle těchto kroků:

  1. Zkopírujte PhraseStringsInContextEditor a jeho obsah do složky /src/Service v repozitáři nebo na požadované místo. Pokud je umístěn jinde, odpovídajícím způsobem upravte jmenný prostor.

  2. Upravte config/services.yaml pro dekorování služby translator adaptérem Phrase:

    services:
        {
        App\Service\PhraseStringsInContextEditor\Translator:
            decorates: translator
  3. Přidejte následující úryvek JavaScriptu do základní šablony nebo šablony Twig mezi {% block javascripts %}, aby In-Context Editor mohl číst webovou stránku:

    <script>
        window.PHRASEAPP_CONFIG = {
            accountId: '0bed59e5',
            projectId: '00000000000000004158e0858d2fa45c',
            datacenter: 'eu',
            origin: 'phrase-symfony',
        {
        (function() {
            var phrasejs = document.createElement('script');
            phrasejs.type = 'module';
            phrasejs.async = true;
            phrasejs.src = 'https://cdn.phrase.com/latest/ice/index.js'
            var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(phrasejs, s);
        {
    </script>

    Aplikace Symfony je nyní připojena k In-Context Editoru.

    ID projektu konkrétního projektu naleznete v nastavení projektu.

    ID účtu naleznete v nastavení organizace "Strings".

    V případě potřeby nastavte datové centrum v USA, abyste umožnili práci s koncovými body v USA:

    window.PHRASEAPP_CONFIG = {
        projectId: "YOUR-PROJECT-ID",
        accountId: "YOUR-ACCOUNT-ID",
        datacenter: "us",
    {
  4. Znovu načtěte aplikaci a přihlaste se pomocí přihlašovacích údajů Phrase, abyste mohli zahájit proces překladu přímo na webové stránce.

Vzor kódu

Tato demo aplikace ukazuje, jak integrovat In-Context Editor s aplikací Symfony.

Nastavení In-Context Editoru

Zpřístupnění názvů klíčů

Obvykle se překlady vykreslují ve vrstvě zobrazení tak, že název přeložitelného řetězce (tj. klíč) předají příslušné překladové metodě nebo pomocnému objektu pro zobrazení.

Ukázkový kód PHP:

$translations = array(

  "page.headline" => "Some Headline",

  "page.link.label" => "I am a link",

  "page.link.hint" => "Click me"

)

function translate($keyName) {

  return $translations[$keyName];

}

Šablona by pak vykreslila výstup metody translate() namísto skutečného přeloženého řetězce:

<h1><?php echo translate("page.headline"); ?></h1>
Formátování

V šabloně musí být uvedeno, pro které klíče se mají vykreslit překlady.

Použijte toto formátování pro zpřístupnění názvů klíčů namísto překladů:

{{__phrase_NameOfYourKey__}}

Příklad:

Pokud je v šabloně klíč page.headline, vykreslete řetězec {{__phrase_page.headline__}}.

Upravte pomocnou metodu translate() tak, aby zpřístupnila názvy klíčů v požadovaném formátu:

function translate($keyName) {

  if ($phraseModeEnabled) {

    return "";

  } else {

    return $translations[$keyName];

  }

}

V závislosti na frameworku mohou být pomocné metody překladu v kódu přepsány, nebo lze vytvořit jejich obalenou verzi pro použití v šablonách.

Příklad:

const t = (key: string) => '{{__phrase_' + key + '__}}'

Escapování názvů klíčů a speciálních znaků

Zajistěte, aby byly názvy klíčů převedeny na rozpoznatelný formát.

Znaky v následujícím seznamu je třeba escapovat při vystavení editoru In-Context:

Znak

Escapovací sekvence

Příklad:

{

[[[[[[html_open]]]]]]

{{__phrase__<key__}} se stane {{__phrase__key[[[[[[html_open]]]]]]__}}

{

[[[[[[html_close]]]]]]

{{__phrase__key>__}} se stane {{__phrase__[[[[[[html_close]]]]]]key__}}

Automatický převod velikosti písmen

Ve výchozím nastavení převádí analyzátor dokumentů editoru In-Context všechny klíče na malá písmena. Pokud se při tomto chování setkáváte s problémy a chcete v editoru In-Context používat klíče rozlišující velká a malá písmena, vypněte funkci automatického převodu na malá písmena:

window.PHRASEAPP_CONFIG = {

  autoLowercase: false

}

Přizpůsobte dekorátory klíčů

Při používání editoru In-Context jsou názvy klíčů obvykle obaleny dekorátory (standardně složenými závorkami), aby se v kontextu dokumentu vygenerovaly jedinečné identifikační klíče:

{{__phrase_YOUR.KEY__}} 

Pokud to způsobuje konflikty s jinými knihovnami (např. šablonovacími systémy na straně klienta, včetně AngularJS a Ember.js), které používají podobnou syntaxi, změňte v nastavení předponu a příponu dekorátoru editoru In-Context. Chcete-li editoru In-Context sdělit, které dekorátory má analyzátor hledat, přidejte před úryvek JavaScriptu následující konfigurační hodnoty:

window.PHRASEAPP_CONFIG = {

  prefix: '[[__',

  suffix: "__]]"

}

Toto říká editoru, aby vyhledával značky začínající [[__ a končící __]]:

[[__phrase_YOUR.KEY__]]

Pokud používáte phraseapp-in-context-editor-ruby gem k zajištění funkčnosti editoru In-Context, ujistěte se, že jsou dekorátory nakonfigurovány:

PhraseApp::InContextEditor.configure do |config|

  config.prefix = "[[__"

  config.suffix = "__]]"

end

Pokud nepoužíváte gem, ujistěte se, že je vzor vystavení názvu klíče upraven ve vlastním kódu.

Povolení a zakázání editoru In-Context

Toto nastavení je dostupné pouze při použití phraseapp-in-context-editor-ruby gemu.

Editor In-Context je ve výchozím nastavení zakázán.

Editor In-Context lze explicitně povolit nebo zakázat. To ovlivňuje zahrnutí úryvku JavaScriptu (při použití pomocníka zobrazení) a vykreslování dekorovaných názvů klíčů ve zobrazeních:

PhraseApp::InContextEditor.enabled = true|false

Příklad navázání příznaku na proměnnou prostředí:

PhraseApp::InContextEditor.enabled = (ENV["IN_CONTEXT_EDITING"] == "1")

Úplné opětovné parsování

Povolte fullReparse, pokud používáte editor In-Context s frameworkem JavaScript, který využívá virtuální DOM, jako je React. To umožňuje správné opětovné parsování při zjištění změn v DOM:

window.PHRASEAPP_CONFIG = {

  fullReparse: true

}

Skrytí prvků před editorem In-Context

Třídy uvedené v možnosti hidingClasses jsou považovány za skryté a skener editoru In-Context je vylučuje. Chcete-li, aby byly prvky s danou třídou prohledávatelné, odstraňte název této třídy z pole hidingClasses namísto jeho přidávání. Přidání názvu třídy do pole vyloučí odpovídající prvky a skryje tlačítko pro úpravy; odstranění názvu třídy z pole zahrne odpovídající prvky a zobrazí tlačítko pro úpravy.

Možnost hidingClasses provádí statickou kontrolu přítomnosti třídy u prvku a jeho předků. Nevyhodnocuje vypočítanou ani responzivní viditelnost. Prvek, který používá responzivní pomocnou třídu odpovídající položce v hidingClasses (například třídu s názvem „hidden“ v kombinaci s třídou viditelnosti specifickou pro breakpoint), je vyloučen ze skenování bez ohledu na to, zda je ve skutečnosti viditelný v aktuální oblasti zobrazení. Vyhněte se používání názvů tříd uvedených v hidingClasses čistě pro responzivní stylování u prvků, které je třeba skenovat.

Sanitizace výstupu na webovou stránku

Editor In-Context lze nakonfigurovat tak, aby před vložením překladu na webovou stránku provedl escapování nebo úpravu překladu, a to poskytnutím funkce vlastnosti sanitize.

Funkce přijímá jako první argument překladový řetězec a měla by vrátit řetězec:

import escape from “lodash/escape”;

window.PHRASEAPP_CONFIG = {  

    sanitize: escape

}

systém jednotného přihlašování

Pokud používáte jednotné přihlášení (SSO) a chcete inicializovat editor In-Context se zapnutým SSO, přidejte před úryvek JavaScriptu následující konfigurační hodnotu:

window.PHRASEAPP_CONFIG = {

  sso: {

    enabled: true,
    
    provider: 'saml',

    identifier: [insert_company_identifier]

  }

}

Chcete-li vyžadovat, aby se uživatelé přihlašovali pomocí SSO, nastavte parametr enforced:

window.PHRASEAPP_CONFIG = {

  sso: {

    enforced: true

  }

}

Stránkování klíčů a stav překladu

U stránek s velkým počtem přeložitelných klíčů načítá editor In-Context klíče po stránkách o 100 položkách. Pouze klíče na první stránce mají při načtení aktivované editační značky. Zbývající klíče se zobrazují jako nepřeložené, dokud není stránka dále posunuta nebo dokud není klíč přímo vyhledán, protože přímé vyhledávání obchází stránkování. Neexistuje žádná možnost konfigurace pro zvětšení velikosti stránky, protože stránkování probíhá na straně serveru, nikoli prostřednictvím klientské knihovny.

Chcete-li zkontrolovat stav překladu u všech klíčů, aniž byste se museli spoléhat na posouvání, klikněte na ikonu vyhledávání v editoru In-Context a otevřete seznam klíčů. Seznam klíčů zobrazuje celkový počet již integrovaných klíčů oproti klíčům chybějícím v projektu a lze jej přepnout tak, aby zobrazoval všechny klíče v projektu namísto pouze klíčů zjištěných na aktuální stránce. Případně zkontrolujte úplnost překladu pro příslušnou úlohu přímo v editoru překladů Strings, který nemá tento limit vykreslování založený na stránkách.

Starý editor In-Context: Nastavení

Instalace webových frameworků

Angular 2 (ngx-translate)

Chcete-li nainstalovat editor In-Context v tomto prostředí, postupujte podle těchto kroků:

  1. Instalace pomocí NPM:

    npm install ngx-translate-phraseapp
  2. Konfigurovat

    let config = {
      projectId: '<YOUR_PROJECT_ID>',
      phraseEnabled: true,
      prefix: "{{__",
      suffix: "__}}",
      fullReparse: true
    

    ID projektu naleznete v nastavení projektu.

  3. Ve výchozím nastavení převádí analyzátor dokumentů editoru všechny klíče na malá písmena. Pokud máte s tímto chováním problémy a chcete v editoru používat klíče rozlišující velká a malá písmena, vypněte funkci automatického převodu na malá písmena:

    let config = {
      
      autoLowercase: false
    }
  4. Přidejte tyto úryvky do aplikace Angular:

    app.component.ts

    import { initializePhraseAppEditor, PhraseAppCompiler} from 'ngx-translate-phraseapp'
    
    let config = {
      projectId: '<YOUR_PROJECT_ID>',
      phraseEnabled: true,
      prefix: "{{__",
      suffix: "__}}",
      fullReparse: true
    
    
    initializePhraseAppEditor(config);

    app.module.ts

    import { TranslateModule, TranslateLoader, TranslateCompiler } from '@ngx-translate/core';
    import { HttpClientModule, HttpClient } from '@angular/common/http';
    import { PhraseAppCompiler } from 'ngx-translate-phraseapp'
    
    export function HttpLoaderFactory(http: HttpClient) {
      return new TranslateHttpLoader(http);
    }
    
    @NgModule({
      declarations: [
        AppComponent
      
      imports: [
        BrowserModule,
        HttpClientModule,
        TranslateModule.forRoot({
          loader: {
            Uveďte: TranslateLoader,
            useFactory: HttpLoaderFactory,
            deps: [HttpClient]
          },
          compiler: {
            Uveďte: TranslateCompiler,
            useClass: PhraseAppCompiler
          }
        
      
      providers: [],
      bootstrap: [AppComponent]
    })
Vzor kódu

Tato demo aplikace představuje integraci editoru In-Context s Angular a ngx-translate.

AngularJS (angular-translate)

Chcete-li nainstalovat editor In-Context v tomto prostředí, postupujte podle těchto kroků:

  1. Nainstalujte angular-phrase pomocí Boweru (nebo stáhněte ručně):

    $ bower install angular-phrase
  2. Přidejte modul angular-phrase do stávající aplikace AngularJS po načtení modulu angular-translate:

    var myApp = angular.module("myApp", ['pascalprecht.translate', 'phrase']);
    
  3. Nakonfigurujte modul:

    myApp.value("phraseProjectId", "YOUR-PROJECT-ID");
    
    myApp.value("phraseEnabled", true);
    
    myApp.value("phraseDecoratorPrefix", "");

    ID projektu naleznete v nastavení projektu. Tím se vytvoří inicializační soubor s některými možnostmi konfigurace.

  4. Přidejte direktivu phrase-javascript do aplikace uvnitř značky <head>:

    <phrase-javascript></phrase-javascript>
  5. Otevřete aplikaci v libovolném webovém prohlížeči a uvidíte editor In-Context aplikovaný na danou aplikaci. Přihlaste se pomocí libovolného uživatele organizace Phrase.

angular-phrase na GitHubu

Vzor kódu

Tato demo aplikace pro angular-phrase ukazuje, jak lokalizovat AngularJS pomocí angular-translate.

Django

Chcete-li nainstalovat editor In-Context v tomto prostředí, postupujte podle těchto kroků:

  1. Nainstalujte balíček django-phrase pomocí pip:

    $ pip install django-phrase
  2. Přidejte Phrase do seznamu nainstalovaných aplikací:

    INSTALLED_APPS = (
    
        'phrase',
    
    )
  3. Použijte značku šablony phrase_i18n v šablonách:

    {% load phrase_i18n %}

    Aby django-phrase mohl přepsat překladové metody, načtěte phrase_i18n po i18n.

  4. Přidejte úryvek JavaScriptu do rozvržení:

    {% phrase_javascript %}
  5. Nakonfigurujte editor v kontextu pro projekt pomocí těchto možností:

    PHRASE_ENABLED = TruePHRASE_PROJECT_ID = 'YOUR_PROJECT_ID'PHRASE_PREFIX = '{{__'PHRASE_SUFFIX = '__}}'
  6. Otevřete aplikaci v libovolném webovém prohlížeči a uvidíte editor In-Context aplikovaný na danou aplikaci. Přihlaste se pomocí libovolného uživatele organizace Phrase.

Kód adaptéru Django na GitHubu

Vzor kódu

Tato demo aplikace ukazuje, jak integrovat editor In-Context s aplikací Django.

React (intl)

Poznámka

Tato knihovna nemusí fungovat v prohlížeči IE11 nebo starších prohlížečích. Pokud je vyžadována podpora starších prohlížečů, přidejte do sestavovacího procesu Babel.

Tato knihovna dědí běžné komponenty balíčků react-intl. Pokud je Phrase povoleno voláním initializePhraseAppEditor, chování komponent se změní.

Chcete-li nainstalovat editor In-Context v tomto prostředí, postupujte podle těchto kroků:

  1. Nainstalujte balíček přes NPM:

    npm install react-intl-phraseapp

    nebo sestavte ze zdrojového kódu:

    npm run dist
    npm install
  2. Konfigurovat

    let config = {
      projectId: '<YOUR_PROJECT_ID>',
      phraseEnabled: true,
      prefix: "[[__",
      suffix: "__]]",
      fullReparse: true
    

    ID projektu naleznete v nastavení projektu.

  3. Přidejte úryvek do aplikace react:

    import {initializePhraseAppEditor} from 'react-intl-phraseapp'
    
    let config = {
      projectId: '<YOUR_PROJECT_ID>',
      phraseEnabled: true,
      prefix: "[[__",
      suffix: "__]]",
      fullReparse: true
    
    
    initializePhraseAppEditor(config);
  4. Najděte všechny importy FormattedMessage a změňte zdroj z react-intl na react-intl-phraseapp.

    import {FormattedMessage} from 'react-intl-phraseapp'
  5. Spusťte jednotkové testy pomocí jest:

    npm test
Vzor kódu

Tato demo ukazuje integraci editoru Phrase In-Context s react-intl.

Ruby on Rails (i18n)

Chcete-li nainstalovat editor In-Context v tomto prostředí, postupujte podle těchto kroků:

  1. Přidejte gem phraseapp-in-context-editor-ruby do prostředí, se kterým chcete editor In-Context používat:

    group :development do
      gem 'phraseapp-in-context-editor-ruby'
     end

    a nainstalujte jej spuštěním příkazu bundle:

    $ bundle install
  2. Nainstalujte gem phraseapp-in-context-editor-ruby spuštěním generátoru Rails:

    $ bundle exec rails generate phraseapp_in_context_editor:install --access-token=YOUR_ACCESS_TOKEN --project-id=YOUR_PROJECT_ID
    

    Přístupový token

    Vytvářejte a spravujte přístupové tokeny v nastavení profilu nebo prostřednictvím rozhraní Authorizations API.

    project.id

    ID projektu konkrétního projektu naleznete v nastavení projektu. Tím se vytvoří inicializační soubor s některými možnostmi konfigurace.

  3. Přidejte úryvek JavaScriptu do rozvržení vaší aplikace v rámci značky <head> pomocí pomocníka phraseapp_in_context_editor_js:

    <head>
      
      <%= phraseapp_in_context_editor_js %>
      
    </head>
  4. Otevřete aplikaci v libovolném webovém prohlížeči a uvidíte editor In-Context aplikovaný na danou aplikaci. Přihlaste se pomocí libovolného uživatele organizace Phrase.

  5. Zakažte Turbolinks (pokud je používáte)

    Turbolinks při každém načtení stránky odstraní ze stránky všechny prvky uživatelského rozhraní editoru In-Context.

    Přidejte atribut data-no-turbolink ke značce <body>:

    <body <%= PhraseApp::InContextEditor.enabled? ? "data-no-turbolink" : "" %>>
Vzor kódu

Tata demo ukazuje integraci editoru Phrase In-Context s react-i18next.

Spring

Chcete-li nainstalovat editor In-Context v tomto prostředí, postupujte podle těchto kroků:

  1. Zajistěte, aby byl v aplikaci dostupný package com.phraseapp.incontexteditor.

  2. Nastavte správné ID projektu a upravte ostatní parametry v PhraseAppConfiguration.class.

  3. Chcete-li vykreslit všechny překlady prostřednictvím Phrase, přidejte bean do aplikace:

    @Bean
    
    @Conditional(PhraseAppEnabledCondition.class)
    
    public MessageSource messageSource() {
    
        return new PhraseAppMessageSource();
    
    }
  4. Poskytněte požadovaného pomocníka JavaScript v šablonách tím, že pomocníka vystavíte jako bean:

    @Bean
    
    public PhraseAppJavascriptHeader phraseAppJavascriptHeader() {
    
        return new PhraseAppJavascriptHeader();
    
    }
  5. Přidejte značku <script> do svých šablon v rámci značky <head> každé stránky:

    <head>
    
        <script th:utext="${@phraseAppJavascriptHeader.getHeader()}"></script>
    
    </head>
  6. Restartujte aplikaci a přihlaste se pomocí uživatelských údajů Phrase.

Zdrojový kód příkladové aplikace na GitHubu

Jak lokalizovat aplikace Spring jako profesionál

Startovací balíček Spring Boot (poskytovaný ePages)

Symfony 2.x

Chcete-li nainstalovat editor In-Context v tomto prostředí, postupujte podle těchto kroků:

  1. Vytvořte nové prostředí, ve kterém poběží editor In-Context. V příkladu je nové prostředí pojmenováno translation.

    Vytvořte nový konfigurační soubor:

    # app/config/config_translation.yml
    
    imports:
    
        - { resource: config.yml }
    
    parameters:
    
        translator.class: Acme\YourBundle\Translation\PhraseTranslator
  2. Vytvořte kontroler, aby bylo prostředí prohlížeče přístupné:

    # web/app_translation.php
    
    <?php
    
    require_once __DIR__.'/../app/bootstrap.php.cache';
    
    require_once __DIR__.'/../app/AppKernel.php';
    
    use Symfony\Component\HttpFoundation\Request;
    
    $kernel = new AppKernel('translation', false);
    
    $kernel->handle(Request::createFromGlobals())->send();
  3. Přepište standardní metodu překladu, abyste zpřístupnili názvy klíčů editoru In-Context:

    # Acme/YourBundle/Translation/PhraseTranslator.php
    
    <?php
    
    namespace Acme\YourBundle\Translation;
    
    use Symfony\Bundle\FrameworkBundle\Translation\Translator as BaseTranslator;
    
    class PhraseTranslator extends BaseTranslator
    
    {
    
        public function trans($id, array $parameters = array(), $domain = 'messages', $locale = null)
    
        {
    
            $prefix = "";
    
            if (!isset($locale)) {
    
                $locale = $this->getLocale();
    
            }
    
            if (!isset($this->catalogues[$locale])) {
    
                $this->loadCatalogue($locale);
    
            }
    
            if ($domain == 'routes') {
    
                // Return translated values for 'routes' domain
    
                return strtr($this->catalogues[$locale]->get((string) $id, $domain), $parameters);
    
            } else {
    
                // Return PhraseApp translation keys for all other domains
    
                return $prefix.$id.$suffix;
    
            }
    
        }
    
    }
  4. Přidejte úryvek JavaScriptu do rozvržení:

    # Acme/YourBundle/Resources/views/layout.html.twig
  5. Otevřete aplikaci v libovolném webovém prohlížeči a uvidíte editor In-Context aplikovaný na danou aplikaci. Přihlaste se pomocí libovolného uživatele organizace Phrase.

Dokumentace k překladům Symfony

Kód adaptéru Symfony 2.x na GitHubu

Symfony 3.x

Chcete-li nainstalovat editor In-Context v tomto prostředí, postupujte podle těchto kroků:

  1. Vytvořte nové prostředí, ve kterém poběží editor In-Context. V příkladu je nové prostředí pojmenováno translation.

    Vytvořte nový konfigurační soubor:

    # app/config/config_translation.yml
    
    imports:
    
       - { resource: config.yml }
  2. Vytvořte kontroler, aby bylo prostředí prohlížeče přístupné:

    # web/app_translation.php
    
    <?php
    
    use Symfony\Component\HttpFoundation\Request;
    
    $loader = require __DIR__.'/../app/autoload.php';
    
    $kernel = new AppKernel('translation', true);
    
    $kernel->loadClassCache();
    
    $request = Request::createFromGlobals();
    
    $response = $kernel->handle($request);
    
    $response->send();
    
    $kernel->terminate($request, $response);
  3. Přepište standardní metodu překladu, abyste zpřístupnili názvy klíčů editoru In-Context:

    # src/AppBundle/Translation/PhraseTranslator.php
    
    <?php
    
    namespace AppBundle\Translation;
    
    use Symfony\Bundle\FrameworkBundle\Translation\Translator as BaseTranslator;
    
    class PhraseTranslator extends BaseTranslator
    
    {
    
       public function trans($id, array $parameters = array(), $domain = 'messages', $locale = null)
    
       {
    
           $prefix = "";
    
           if (null === $domain) {
    
               $domain = 'messages';
    
           }
    
           // Return ID of translation key with pre- and suffix for PhraseApp
    
           return $prefix.$id.$suffix;
    
       }
    
    }
  4. Zajistěte, aby byla třída vždy přepsána, když je balíček používán s compiler pass:

    # src/AppBundle/DependencyInjection/Compiler/OverrideServiceCompilerPass.php
    
    <?php
    
    namespace AppBundle\DependencyInjection\Compiler;
    
    use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface;
    
    use Symfony\Component\DependencyInjection\ContainerBuilder;
    
    class OverrideServiceCompilerPass implements CompilerPassInterface
    
    {
    
       public function process(ContainerBuilder $container)
    
       {
    
           $definition = $container->getDefinition('translator.default');
    
           $definition->setClass('AppBundle\Translation\PhraseTranslator');
    
       }
    
    }
  5. Pokud používáte samostatné compiler passy, zaregistrujte je v metodě build() třídy balíčku:

    # src/AppBundle/AppBundle.php
    
    <?php
    
    namespace AppBundle;
    
    use Symfony\Component\HttpKernel\Bundle\Bundle;
    
    use Symfony\Component\DependencyInjection\ContainerBuilder;
    
    use AppBundle\DependencyInjection\Compiler\OverrideServiceCompilerPass;
    
    class AppBundle extends Bundle
    
    {
    
       public function build(ContainerBuilder $container)
    
       {
    
           parent::build($container);
    
           if($container->getParameter("kernel.environment") == 'translation') {
    
               $container->addCompilerPass(new OverrideServiceCompilerPass());
    
           
    
       }
    
    }
  6. Přidejte úryvek JavaScriptu do rozvržení:

    # src/YourBundle/Resources/views/layout.html.twig
  7. Otevřete aplikaci v libovolném webovém prohlížeči a uvidíte editor In-Context aplikovaný na aplikaci. Přihlaste se pomocí libovolného uživatele organizace Phrase.

Dokumentace k překladům Symfony

Vue I18n

Poznámka

Editor Vue I18n Phrase In-Context podporuje všechny verze Vue I18n 8.17.5 a novější. Tato knihovna může fungovat s předchozími verzemi, ale ty nejsou oficiálně podporovány a nebudou dostávat žádné konkrétní aktualizace ani opravy chyb.

Chcete-li v tomto prostředí nainstalovat editor In-Context, postupujte podle těchto kroků:

  1. Nainstalujte balíček pomocí preferovaného správce balíčků:

    # yarn
    yarn add vue-i18n-phrase-in-context-editor
    
    # npm
    npm install vue-i18n-phrase-in-context-editor

    nebo načtěte pomocí CDN (zaregistrujte ručně window['vue-i18n-phrase-in-context-editor'] ):

    <script src="https://unpkg.com/vue-i18n-phrase-in-context-editor/dist/vue-i18n-phrase-in-context-editor.umd.min.js"></script>
    
  2. Bootstrap (ukázka):

    import Vue from 'vue';
    import VueI18n from 'vue-i18n';
    
    Vue.use(VueI18n);
    
    const i18n = new VueI18n({
      locale: process.env.VUE_APP_I18N_LOCALE || 'en',
      fallbackLocale: process.env.VUE_APP_I18N_FALLBACK_LOCALE || 'en',
      messages: {
          "hello": { "hello" : "World",
      }
    });
    
    new Vue({
      i18n,
      render: h => h(App)
    }).$mount('#app');

    Pro integraci knihovny:

    1. Importujte knihovnu Vue I18n Phrase In-Context Editor.

    2. Vytvořte novou instanci Vue I18n Phrase In-Context Editor, přičemž jako první argument předejte instanci Vue I18n a jako druhý Phrase Config.

Možnosti konfigurace a ukázkové metody.

Použití starého editoru In-context

Režim Ajax

Editor In-Context podporuje Ajax a manipulaci s DOM (tj. prostřednictvím JavaScriptu) pomocí sledovacích objektů mutací (mutation observers).

Režim Ajax může v některých případech způsobit problémy a při použití editoru In-Context může vést k závažným problémům s výkonem. Chcete-li režim Ajax zakázat, přidejte před úryvek JavaScriptu následující konfigurační hodnotu:

window.PHRASEAPP_CONFIG = {

  ajaxObserver: false

}

Režim ladění

Chcete-li povolit režim ladění, přidejte před úryvek JavaScriptu následující konfigurační hodnotu:

window.PHRASEAPP_CONFIG = {

  debugMode: true

}

Vynucení locale

Chcete-li při spuštění editoru In-Context explicitně nastavit konkrétní locale, použijte nastavení forceLocale. To je užitečné pro předvýběr locale, které se momentálně zobrazuje ve vaší webové aplikaci i v editoru In-Context:

window.PHRASEAPP_CONFIG = {

  forceLocale: "pt-BR"

}

Ignorované klíče

Toto nastavení je dostupné pouze při použití gemu phraseapp-in-context-editor-ruby.

Klíče mohou být vyloučeny z vykreslení v editoru In-Context. Při práci s Rails mohou být klíče pro data, jako jsou chybové zprávy nebo klíče formátu data a času, ignorovány. Chcete-li vyloučit klíče z automatického zpracování pomocí gemu phraseapp-in-context-editor-ruby, přidejte pole těchto klíčů do inicializačního souboru phraseapp_in_context_editor.rb. Lze také použít zástupné znaky:

PhraseApp::InContextEditor.configure do |config|

  config.ignored_keys = ["date.*", "forbidden.key",   "errors.messages*"]

end

Klíče odpovídající kterémukoli z těchto vzorů nebudou zpřístupněny editoru In-Context a budou vykresleny normálně.

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.