Skip to content

Instantly share code, notes, and snippets.

@stasm
Last active October 30, 2018 10:25
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save stasm/71868b98a3c9c507645bf4f2438552d6 to your computer and use it in GitHub Desktop.
Save stasm/71868b98a3c9c507645bf4f2438552d6 to your computer and use it in GitHub Desktop.
Parameterized Terms in Practice.

Two examples of changes required to the current localizations into Italian and Ukrainian if VariantLists are replaced with parameterized terms (a.k.a. macros). See projectfluent/fluent#176 for details of the proposal.

diff --git a/browser/browser/branding/sync-brand.ftl b/browser/browser/branding/sync-brand.ftl
--- a/browser/browser/branding/sync-brand.ftl
+++ b/browser/browser/branding/sync-brand.ftl
@@ -4,12 +4,12 @@
-sync-brand-short-name = Sync
# “Sync” can be localized, “Firefox” must be treated as a brand,
# and kept in English.
-sync-brand-name = Firefox Sync
# “Account” can be localized, “Firefox” must be treated as a brand,
# and kept in English.
-fxaccount-brand-name =
- {
+ { $first-letter ->
[lowercase] account Firefox
*[uppercase] Account Firefox
}
diff --git a/browser/browser/policies/policies-descriptions.ftl b/browser/browser/policies/policies-descriptions.ftl
--- a/browser/browser/policies/policies-descriptions.ftl
+++ b/browser/browser/policies/policies-descriptions.ftl
@@ -18,17 +18,17 @@ policy-BlockAboutSupport = Blocca access
policy-Bookmarks = Crea segnalibri nella barra dei segnalibri, nel menu segnalibri o in una specifica cartella in questi elementi.
policy-Certificates = Imposta se utilizzare o meno i certificati predefiniti (built-in). Al momento questo criterio è disponibile solo per Windows.
policy-CertificatesDescription = Aggiungi certificati o utilizza i certificati predefiniti (built-in).
policy-Cookies = Consenti o nega ai siti web di impostare cookie.
policy-DisableAppUpdate = Blocca l’aggiornamento del browser.
policy-DisableBuiltinPDFViewer = Disattiva PDF.js, il lettore PDF integrato in { -brand-short-name }.
policy-DisableDeveloperTools = Blocca accesso agli strumenti di sviluppo.
policy-DisableFeedbackCommands = Disattiva i comandi per inviare feedback dal menu Aiuto (“Invia feedback…” e “Segnala un sito ingannevole…”).
-policy-DisableFirefoxAccounts = Disattiva i servizi basati sugli { -fxaccount-brand-name[lowercase] }, incluso Sync.
+policy-DisableFirefoxAccounts = Disattiva i servizi basati sugli { -fxaccount-brand-name($first-letter: "lowercase") }, incluso Sync.
# Firefox Screenshots is the name of the feature, and should not be translated.
policy-DisableFirefoxScreenshots = Disattiva Firefox Screenshots.
policy-DisableFirefoxStudies = Impedisci a { -brand-short-name } di condurre studi.
policy-DisableForgetButton = Impedisci accesso al pulsante “Dimentica”.
policy-DisableFormHistory = Non conservare la cronologia delle ricerche e dei moduli.
policy-DisableMasterPasswordCreation = Se impostato a “true” non è possibile impostare una password principale.
policy-DisablePocket = Disattiva la possibilità di salvare pagine web in Pocket.
policy-DisablePrivateBrowsing = Disattiva la modalità Navigazione anonima.
diff --git a/browser/browser/preferences/preferences.ftl b/browser/browser/preferences/preferences.ftl
--- a/browser/browser/preferences/preferences.ftl
+++ b/browser/browser/preferences/preferences.ftl
@@ -435,17 +435,17 @@ containers-preferences-button =
.label = Preferenze
containers-remove-button =
.label = Rimuovi
## Sync Section - Signed out
sync-signedout-caption = Il tuo Web, sempre con te
sync-signedout-description = Sincronizza segnalibri, cronologia, schede, password, componenti aggiuntivi e impostazioni attraverso tutti i tuoi dispositivi.
-sync-signedout-account-title = Connetti il tuo { -fxaccount-brand-name[lowercase] }
+sync-signedout-account-title = Connetti il tuo { -fxaccount-brand-name($first-letter: "lowercase") }
sync-signedout-account-create = Non hai ancora un account? Scopri come crearne uno
.accesskey = h
sync-signedout-account-signin =
.label = Accedi…
.accesskey = d
# This message contains two links and two icon images.
# `<img data-l10n-name="android-icon"/>` - Android logo icon
# `<a data-l10n-name="android-link">` - Link to Android Download
diff --git a/browser/browser/branding/sync-brand.ftl b/browser/browser/branding/sync-brand.ftl
--- a/browser/browser/branding/sync-brand.ftl
+++ b/browser/browser/branding/sync-brand.ftl
@@ -1,47 +1,71 @@
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-sync-brand-short-name =
- {
- *[nom] Синхронізація
- [nom-lower] синхронізація
- [gen] Синхронізації
- [gen-lower] синхронізації
- [dat] Синхронізації
- [dat-lower] синхронізації
- [acc] Синхронізацію
- [acc-lower] синхронізацію
- [abl] Синхронізацією
- [abl-lower] синхронізацією
+ { $declension ->
+ *[nom] { $first-letter ->
+ *[upper] Синхронізація
+ [lower] синхронізація
+ }
+ [gen] { $first-letter ->
+ *[upper] Синхронізації
+ [lower] синхронізації
+ }
+ [dat] { $first-letter ->
+ *[upper] Синхронізації
+ [lower] синхронізації
+ }
+ [acc] { $first-letter ->
+ *[upper] Синхронізацію
+ [lower] синхронізацію
+ }
+ [abl] { $first-letter ->
+ *[upper] Синхронізацією
+ [lower] синхронізацією
+ }
}
# “Sync” can be localized, “Firefox” must be treated as a brand,
# and kept in English.
-sync-brand-name =
- {
- *[nom] Синхронізація Firefox
- [nom-lower] синхронізація Firefox
- [gen] Синхронізації Firefox
- [gen-lower] синхронізації Firefox
- [dat] Синхронізації Firefox
- [dat-lower] синхронізації Firefox
- [acc] Синхронізацію Firefox
- [acc-lower] синхронізацію Firefox
- [abl] Синхронізацією Firefox
- [abl-lower] синхронізацією Firefox
+ { $declension ->
+ *[nom] { $first-letter ->
+ *[upper] Синхронізація Firefox
+ [lower] синхронізація Firefox
+ }
+ [gen] { $first-letter ->
+ *[upper] Синхронізації Firefox
+ [lower] синхронізації Firefox
+ }
+ [dat] { $first-letter ->
+ *[upper] Синхронізації Firefox
+ [lower] синхронізації Firefox
+ }
+ [acc] { $first-letter ->
+ *[upper] Синхронізацію Firefox
+ [lower] синхронізацію Firefox
+ }
+ [abl] { $first-letter ->
+ *[upper] Синхронізацією Firefox
+ [lower] синхронізацією Firefox
+ }
}
# “Account” can be localized, “Firefox” must be treated as a brand,
# and kept in English.
-fxaccount-brand-name =
- {
- *[nom] Обліковий запис Firefox
- [nom-lower] обліковий запис Firefox
- [gen] Облікового запису Firefox
- [gen-lower] облікового запису Firefox
- [dat] Обліковому запису Firefox
- [dat-lower] обліковому запису Firefox
- [acc] Обліковий запис Firefox
- [acc-lower] обліковий запис Firefox
- [abl] Обліковим записом Firefox
- [abl-lower] обліковим записом Firefox
+ { $first-letter ->
+ *[upper] { $declension ->
+ *[nom] Обліковий запис Firefox
+ [gen] Облікового запису Firefox
+ [dat] Обліковому запису Firefox
+ [acc] Обліковий запис Firefox
+ [abl] Обліковим записом Firefox
+ }
+ [lower] { $declension ->
+ *[nom] обліковий запис Firefox
+ [gen] облікового запису Firefox
+ [dat] обліковому запису Firefox
+ [acc] обліковий запис Firefox
+ [abl] обліковим записом Firefox
+ }
}
diff --git a/browser/browser/preferences/preferences.ftl b/browser/browser/preferences/preferences.ftl
--- a/browser/browser/preferences/preferences.ftl
+++ b/browser/browser/preferences/preferences.ftl
@@ -122,19 +122,19 @@ search-results-help-link = Потріб�
## General Section
startup-header = Запуск
# { -brand-short-name } will be 'Firefox Developer Edition',
# since this setting is only exposed in Firefox Developer Edition
separate-profile-mode =
.label = Дозволити { -brand-short-name } та Firefox виконуватись одночасно
-use-firefox-sync = Підказка: При цьому використовуються окремі профілі. Скористайтеся { -sync-brand-short-name[abl-lower] } для обміну даними між ними.
-get-started-not-logged-in = Увійти в { -sync-brand-short-name[acc] }…
-get-started-configured = Відкрити налаштування { -sync-brand-short-name[dat] }
+use-firefox-sync = Підказка: При цьому використовуються окремі профілі. Скористайтеся { -sync-brand-short-name($declension: "abl", $first-letter: "lower") } для обміну даними між ними.
+get-started-not-logged-in = Увійти в { -sync-brand-short-name($declension: "acc") }…
+get-started-configured = Відкрити налаштування { -sync-brand-short-name($declension: "dat") }
always-check-default =
.label = Завжди перевіряти чи є { -brand-short-name } типовим браузером
.accesskey = б
is-default = { -brand-short-name } зараз ваш типовий браузер
is-not-default = { -brand-short-name } не є вашим типовим браузером
set-as-my-default-browser =
.label = Зробити типовим…
.accesskey = т
@@ -436,17 +436,17 @@ containers-preferences-button =
.label = Налаштування
containers-remove-button =
.label = Вилучити
## Sync Section - Signed out
sync-signedout-caption = Візьміть свій інтернет з собою
sync-signedout-description = Синхронізуйте закладки, історію, вкладки, паролі, додатки, а також налаштування на всіх своїх пристроях.
-sync-signedout-account-title = Під’єднайтеся до { -fxaccount-brand-name[gen] }
+sync-signedout-account-title = Під’єднайтеся до { -fxaccount-brand-name($declension: "gen") }
sync-signedout-account-create = Не маєте облікового запису? Створімо його!
.accesskey = С
sync-signedout-account-signin =
.label = Увійти…
.accesskey = У
# This message contains two links and two icon images.
# `<img data-l10n-name="android-icon"/>` - Android logo icon
# `<a data-l10n-name="android-link">` - Link to Android Download
diff --git a/browser/browser/preferences/syncDisconnect.ftl b/browser/browser/preferences/syncDisconnect.ftl
--- a/browser/browser/preferences/syncDisconnect.ftl
+++ b/browser/browser/preferences/syncDisconnect.ftl
@@ -1,17 +1,17 @@
# This Source Code Form is subject to the terms of the Mozilla Public
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
sync-disconnect-dialog =
- .title = Від'єднатися від { -sync-brand-short-name[dat] }?
+ .title = Від'єднатися від { -sync-brand-short-name($declension: "dat") }?
.style = width: 36em; min-height: 35em;
-sync-disconnect-heading = Ви хочете також вилучити дані браузера на цьому комп'ютері? В будь-якому випадку, ваші дані { -sync-brand-name[gen] } все одно залишаться в обліковому записі.
-sync-disconnect-remove-sync-caption = Вилучити дані { -sync-brand-name[gen] }
+sync-disconnect-heading = Ви хочете також вилучити дані браузера на цьому комп'ютері? В будь-якому випадку, ваші дані { -sync-brand-name($declension: "gen") } все одно залишаться в обліковому записі.
+sync-disconnect-remove-sync-caption = Вилучити дані { -sync-brand-name($declension: "gen") }
sync-disconnect-remove-sync-data = Закладки, історія, паролі та інші дані
sync-disconnect-remove-other-caption = Вилучити інші особисті дані
sync-disconnect-remove-other-data = Куки, кеш, автономні дані веб-сайтів та інше
# Shown while the disconnect is in progress
sync-disconnect-disconnecting = Від'єднання…
sync-disconnect-cancel =
.label = Скасувати
.accesskey = С
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment