-
Team, Professional, Business, Enterprise a Software UI/UX.
S dotazy ohledně licencí se obraťte na prodejní oddělení.
-
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:
-
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ů.
Po instalaci lze In-Context editor přizpůsobit pro práci s mnoha technologiemi.
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.
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>
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ů:
-
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>
-
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:
-
Importujte
PhraseInContextEditorPostProcessorz knihovny i18next-phrase-in-context-editor-post-processor. -
Vytvořte novou instanci i18next Phrase In-Context Editor Post Processor a předejte jí PhraseConfig jako argument.
-
Nově vytvořenou instanci i18next Phrase In-Context Editor Post Processor předejte metodě i18next use.
-
Přidejte řetězec
phraseInContextEditordo pole postProcess (v konfiguračním objektu metody i18next init).
-
-
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
useOldICEpro přepnutí na starý ICE:i18nextInstance.use(new PhraseInContextEditorPostProcessor({ phraseEnabled: true, projectId: '00000000000000004158e0858d2fa45c', accountId: '0bed59e5', useOldICE: true, { -
Spusťte editor In-Context.
-
Otevřete aplikaci ve webovém prohlížeči pro zobrazení editoru In-Context. Přihlaste se jako libovolný uživatel organizace Phrase.
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ů:
-
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>
-
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:
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ů:
-
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
-
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.
-
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); -
Najděte všechny importy
FormattedMessagea změňte zdroj zreact-intlnareact-intl-phraseapp.import {FormattedMessage} from 'react-intl-phraseapp' -
Spusťte jednotkové testy pomocí jest:
npm test
Vzor kódu
Tato ukázka ukazuje integraci editoru Phrase In-Context s react-intl.
Předpoklady
-
Zaregistrujte se k účtu Phrase Strings.
-
Pro lokalizaci v aplikacích Angular 2 použijte modul ngx-translate.
Chcete-li nainstalovat editor In-Context v tomto prostředí, postupujte podle těchto kroků:
-
Nainstalujte pomocí NPM:
npm install ngx-translate-phraseapp
-
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
useOldICEpro 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",
-
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 } -
Přidejte tyto úryvky do aplikace Angular:
app.component.tsimport { initializePhraseAppEditor, PhraseAppCompiler, PhraseConfig} from 'ngx-translate-phraseapp' let config = { PhraseConfig = { projectId: '<YOUR_PROJECT_ID>', accountID: '<YOUR_ACCOUNT_ID>' phraseEnabled: true, { initializePhraseAppEditor(config);app.module.tsimport { 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.
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
-
Zaregistrujte se k účtu Phrase Strings.
Chcete-li nainstalovat editor In-Context v tomto prostředí, postupujte podle těchto kroků:
-
Přidejte knihovnu
phraseapp-in-context-editor-rubydo 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
-
-
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.
-
Přidejte úryvek kódu Ruby do rozvržení aplikace
app/views//layouts/application.html.erb:<%= load_in_context_editor %>
-
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"
-
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.
Předpoklady
-
Zaregistrujte se k účtu Phrase Strings.
-
Použijte framework Django pro Python.
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ů:
-
Nainstalujte balíček
django-phrasepomocí pip:$ pip install django-phrase
-
Přidejte Phrase do seznamu nainstalovaných aplikací:
INSTALLED_APPS = ( 'phrase', ) -
Přidejte následující úryvky šablon do souboru rozvržení
templates/base_generic.htmlnebo ekvivalentu:{% load phrase_i18n %} {% phrase_javascript %} -
Použijte značku šablony phrase_i18n v šablonách (například
demo/ice_demo/templates/index.html):{% load phrase_i18n %} -
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.
-
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.
Předpoklady
-
Zaregistrujte se k účtu Phrase Strings.
-
Použijte framework Flask pro Python.
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ů:
-
Nainstalujte balíček
Flask-Phrasepomocí pip:pip install Flask-Phrase
-
Přidejte následující konfiguraci do aplikace Flask (
app.configneboconfig.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)
-
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.
Předpoklady
-
Zaregistrujte se k účtu Phrase Strings.
-
Použijte framework Symfony pro PHP.
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ů:
-
Zkopírujte
PhraseStringsInContextEditora jeho obsah do složky/src/Servicev repozitáři nebo na požadované místo. Pokud je umístěn jinde, odpovídajícím způsobem upravte jmenný prostor. -
Upravte
config/services.yamlpro dekorování službytranslatoradaptérem Phrase:services: { App\Service\PhraseStringsInContextEditor\Translator: decorates: translator -
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", { -
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.
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 + '__}}'
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: |
|---|---|---|
|
{ |
|
{{__phrase__<key__}} se stane {{__phrase__key[[[[[[html_open]]]]]]__}} |
|
{ |
|
{{__phrase__key>__}} se stane {{__phrase__[[[[[[html_close]]]]]]key__}} |
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ř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.
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")
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
}
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.
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
}
}
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.
Chcete-li nainstalovat editor In-Context v tomto prostředí, postupujte podle těchto kroků:
-
Instalace pomocí NPM:
npm install ngx-translate-phraseapp
-
Konfigurovat
let config = { projectId: '<YOUR_PROJECT_ID>', phraseEnabled: true, prefix: "{{__", suffix: "__}}", fullReparse: trueID projektu naleznete v nastavení projektu.
-
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 } -
Přidejte tyto úryvky do aplikace Angular:
app.component.tsimport { initializePhraseAppEditor, PhraseAppCompiler} from 'ngx-translate-phraseapp' let config = { projectId: '<YOUR_PROJECT_ID>', phraseEnabled: true, prefix: "{{__", suffix: "__}}", fullReparse: true initializePhraseAppEditor(config);app.module.tsimport { 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.
Chcete-li nainstalovat editor In-Context v tomto prostředí, postupujte podle těchto kroků:
-
Nainstalujte angular-phrase pomocí Boweru (nebo stáhněte ručně):
$ bower install angular-phrase
-
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']); -
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.
-
Přidejte direktivu
phrase-javascriptdo aplikace uvnitř značky<head>:<phrase-javascript></phrase-javascript>
-
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.
Vzor kódu
Tato demo aplikace pro angular-phrase ukazuje, jak lokalizovat AngularJS pomocí angular-translate.
Chcete-li nainstalovat editor In-Context v tomto prostředí, postupujte podle těchto kroků:
-
Nainstalujte balíček
django-phrasepomocí pip:$ pip install django-phrase
-
Přidejte Phrase do seznamu nainstalovaných aplikací:
INSTALLED_APPS = ( 'phrase', ) -
Použijte značku šablony phrase_i18n v šablonách:
{% load phrase_i18n %}Aby
django-phrasemohl přepsat překladové metody, načtěte phrase_i18n po i18n. -
Přidejte úryvek JavaScriptu do rozvržení:
{% phrase_javascript %} -
Nakonfigurujte editor v kontextu pro projekt pomocí těchto možností:
PHRASE_ENABLED = TruePHRASE_PROJECT_ID = 'YOUR_PROJECT_ID'PHRASE_PREFIX = '{{__'PHRASE_SUFFIX = '__}}' -
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.
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ů:
-
Nainstalujte balíček přes NPM:
npm install react-intl-phraseapp
nebo sestavte ze zdrojového kódu:
npm run dist
npm install
-
Konfigurovat
let config = { projectId: '<YOUR_PROJECT_ID>', phraseEnabled: true, prefix: "[[__", suffix: "__]]", fullReparse: trueID projektu naleznete v nastavení projektu.
-
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); -
Najděte všechny importy
FormattedMessagea změňte zdroj zreact-intlnareact-intl-phraseapp.import {FormattedMessage} from 'react-intl-phraseapp' -
Spusťte jednotkové testy pomocí jest:
npm test
Vzor kódu
Tato demo ukazuje integraci editoru Phrase In-Context s react-intl.
Chcete-li nainstalovat editor In-Context v tomto prostředí, postupujte podle těchto kroků:
-
Přidejte gem
phraseapp-in-context-editor-rubydo 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
-
Nainstalujte gem
phraseapp-in-context-editor-rubyspuš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.
-
Přidejte úryvek JavaScriptu do rozvržení vaší aplikace v rámci značky
<head>pomocí pomocníkaphraseapp_in_context_editor_js:<head> <%= phraseapp_in_context_editor_js %> </head>
-
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.
-
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-turbolinkke značce<body>:<body <%= PhraseApp::InContextEditor.enabled? ? "data-no-turbolink" : "" %>>
Vzor kódu
Tata demo ukazuje integraci editoru Phrase In-Context s react-i18next.
Chcete-li nainstalovat editor In-Context v tomto prostředí, postupujte podle těchto kroků:
-
Zajistěte, aby byl v aplikaci dostupný package
com.phraseapp.incontexteditor. -
Nastavte správné ID projektu a upravte ostatní parametry v
PhraseAppConfiguration.class. -
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(); } -
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(); } -
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> -
Restartujte aplikaci a přihlaste se pomocí uživatelských údajů Phrase.
Zdrojový kód příkladové aplikace na GitHubu
Chcete-li nainstalovat editor In-Context v tomto prostředí, postupujte podle těchto kroků:
-
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 -
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(); -
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; } } } -
Přidejte úryvek JavaScriptu do rozvržení:
# Acme/YourBundle/Resources/views/layout.html.twig
-
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.
Chcete-li nainstalovat editor In-Context v tomto prostředí, postupujte podle těchto kroků:
-
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 } -
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); -
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; } } -
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'); } } -
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()); } } -
Přidejte úryvek JavaScriptu do rozvržení:
# src/YourBundle/Resources/views/layout.html.twig
-
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.
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ů:
-
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>
-
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:
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
}
Chcete-li povolit režim ladění, přidejte před úryvek JavaScriptu následující konfigurační hodnotu:
window.PHRASEAPP_CONFIG = {
debugMode: true
}
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"
}
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ě.