Source code

Revision control

Copy as Markdown

Other Tools

# Any copyright is dedicated to the Public Domain.
import fluent.syntax.ast as FTL
from fluent.migrate.helpers import VARIABLE_REFERENCE
from fluent.migrate.transforms import COPY, REPLACE
def migrate(ctx):
"""Bug 2082298 - Migrate narrate.properties to Fluent, part {index}."""
source = "toolkit/chrome/global/narrate.properties"
target = "toolkit/toolkit/global/narrate.ftl"
def shortcut_title(id, key):
return FTL.Message(
id=FTL.Identifier(id),
attributes=[
FTL.Attribute(
id=FTL.Identifier("title"),
value=REPLACE(
source,
key,
{"%1$S": VARIABLE_REFERENCE("shortcut")},
),
),
],
)
def title(id, key):
return FTL.Message(
id=FTL.Identifier(id),
attributes=[
FTL.Attribute(
id=FTL.Identifier("title"),
value=COPY(source, key),
),
],
)
ctx.add_transforms(
target,
target,
[
FTL.Message(
id=FTL.Identifier("narrate-toggle-label"),
value=REPLACE(
source,
"read-aloud-label",
{"%1$S": VARIABLE_REFERENCE("shortcut")},
),
),
shortcut_title("narrate-skip-previous", "previous-label"),
shortcut_title("narrate-start", "start-label"),
shortcut_title("narrate-stop", "stop-label"),
shortcut_title("narrate-skip-next", "next-label"),
FTL.Message(
id=FTL.Identifier("narrate-header"),
value=COPY(source, "read-aloud-header"),
),
title("narrate-rate-slow", "slow-speed-label"),
title("narrate-rate-fast", "fast-speed-label"),
FTL.Message(
id=FTL.Identifier("narrate-voice-header"),
value=COPY(source, "select-voice-header"),
),
FTL.Message(
id=FTL.Identifier("narrate-voice-default"),
value=COPY(source, "defaultvoice"),
),
FTL.Message(
id=FTL.Identifier("narrate-voice-label"),
value=REPLACE(
source,
"voiceLabel",
{
"%1$S": VARIABLE_REFERENCE("name"),
"%2$S": VARIABLE_REFERENCE("language"),
},
),
),
],
)