Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

lotを使わずにFluentだけでローカライズ #344

Open
makotokato opened this issue Oct 4, 2022 · 8 comments
Open

lotを使わずにFluentだけでローカライズ #344

makotokato opened this issue Oct 4, 2022 · 8 comments

Comments

@makotokato
Copy link

現在 lot を使ってmacOS版のローカライズとそれ以外のローカライズを分けてると思うのですが、Firefoxに関しては *.dtdに関してはほぼFluentへ移行ずみ (107? くらいですべて移行の計画) で*.propertiesも移行する予定と聞いてます。(おそらくFirefoxが移行完了になったころにはでcomm-central側も強制移行させられるタイムスケジュールが出るとは思います)

Fluentだったらプラットフォーム毎に分けたローカライズが可能なので、新規コントリビューターの障壁になるようなlotのようなツールの依存関係をできるかぎり回避したほうがいいと思うのですが、いかがでしょうか?もちろんなんかのLintツールが投入できればいいとは思うのですが。

@marsf
Copy link
Member

marsf commented Oct 4, 2022

mozilla-japan/lot#4
mozilla-japan/lot#5

10 年くらい前から lot がオワコンなのは承知しています。worderror 等のチェックと文字チェックは Python でできないかなとか、Github に組み込めないかとか、考えてはいますがなかなか取り組めずにいます。

さらに flod からは Pontoon に移行してほしいと口頭でも言われて何年も経ってしまいました。優先順位としては Pontoon に移行できるようにする (Pontoon に Lint のような必要な機能を実装する) ことのほうが高いと思います。

どちらにしても、ja / ja-JP-mac の用語の使い分け処理のオーバーヘッドが大きいので、ja.filter をできるだけ整理しているところです。

@makotokato
Copy link
Author

どちらにしても、ja / ja-JP-mac の用語の使い分け処理のオーバーヘッドが大きいので、https://github.com/mozilla-japan/gecko-l10n/issues/208しているところです。

これ、Fluentの場合はlot構文使わないようにするだけいい気がするんですけど。あとはtextlint みたいなのでお茶を濁すのもありかと

@marsf
Copy link
Member

marsf commented Oct 7, 2022

Fluentの場合はlot構文使わないようにするだけいい

というのは、リンク先 lot の issue 4 の dynamis さんのコメントと同じことですよね。オーバーヘッドは Fluent で書いた場合の PLATFORM() の処理が大量に発生することを指しています。これはユーザーアプリケーション側の処理で、実際どの程度になるかは調べてません。

具体的にはこんな感じなら使い物になるという想定。但し実行時のパフォーマンスが良くないのは目に見えているため、ビルド時に置き換え処理を行うべき。

    -window =
        { PLATFORM() ->
            [macos] ウインドウ
           *[other] ウィンドウ
        }
    some-entity = { -window } をなんちゃらかんちゃら

エラーチェック周りはコンバート時あるいはコミット時に実行されるので、textlint で処理できるならそれでも良いです。

wordcheck, charcheck は、lot.conf に定義されています。
https://github.com/mozilla-japan/lot/blob/9eeb97f455cfd98b345bdd237fe7392719b06970/config/lot.conf#L168-L217

常用漢字データは /res/const.conf にあります。
https://github.com/mozilla-japan/lot/blob/9eeb97f455cfd98b345bdd237fe7392719b06970/res/const.conf#L134-L146

@makotokato
Copy link
Author

というのは、リンク先 lot の issue 4 の dynamis さんのコメントと同じことですよね。オーバーヘッドは Fluent で書いた場合の PLATFORM() の処理が大量に発生することを指しています。これはユーザーアプリケーション側の処理で、実際どの程度になるかは調べてません。

オーバーヘッドはおそらくほぼないと思ってます (すべてのローカライズ文字列が条件式を持つわけではないですし)。もしそれが起きるのであればMozilla側の仕事です (バグをBMOに登録)。

エラーチェック周りはコンバート時あるいはコミット時に実行されるので、textlint で処理できるならそれでも良いです。

wordcheck, charcheck は、lot.conf に定義されています。 https://github.com/mozilla-japan/lot/blob/9eeb97f455cfd98b345bdd237fe7392719b06970/config/lot.conf#L168-L217

常用漢字データは /res/const.conf にあります。 https://github.com/mozilla-japan/lot/blob/9eeb97f455cfd98b345bdd237fe7392719b06970/res/const.conf#L134-L146

ここらはgithub actionでどうにかしたほうがよい気がしますね

@marsf
Copy link
Member

marsf commented Nov 21, 2022

Fluentの場合はlot構文使わないようにするだけいい気がするんですけど。

こんな感じでフィルター用の .ftl を書いてみました。
l10nfilters-ja.ftl.txt

PLATFORM() は (余計なものを除いて) 57 個以上あります。
全体に適用するには、どこに置いたらよいでしょう?

## Symbol

# e.g. { -l10n-ui-bracket(ui:"詳細設定...") }
-l10n-ui-bracket =
    { PLATFORM() ->
        [macos] “{ $ui }”
       *[other] [{ $ui }]
    }

## Common terms

-l10n-Default =
    { PLATFORM() ->
        [macos] デフォルト
       *[other] 既定
    }
-l10n-Default- =
    { PLATFORM() ->
        [macos] デフォルト
       *[other] 既定の
    }
-l10n-Default-browser =
    { PLATFORM() ->
        [macos] デフォルトウェブブラウザー
       *[other] 既定のブラウザー
    }

...以下略

@marsf
Copy link
Member

marsf commented Nov 27, 2022

$case で活用語尾などに対応してみました。

{ -l10n-Default(case: "of") }設定 -> 既定の設定
{ -l10n-Paste(case: "si") }て検索 -> 貼り付けて検索

l10nfilters-ja.ftl.txt

-l10n-Paste =
    { $case ->
       *[CMD]
            { PLATFORM() ->
                [macos] ペースト
               *[other] 貼り付け
            }
        [si]
            { PLATFORM() ->
                [macos] ペーストし
               *[other] 貼り付け
            }
        [suru]
            { PLATFORM() ->
                [macos] ペーストする
               *[other] 貼り付る
            }
    }

Import/Export の [macos][other] が逆になっていたのも修正しました。

@marsf
Copy link
Member

marsf commented Mar 19, 2023

@marsf
Copy link
Member

marsf commented Jun 10, 2024

lot の convert と errorcheck まわりに相当する部分を Python で書き直しました。
https://github.com/marsf/lot-conv

作業上は、compare-locales, lot-conv.py, lot-proof.py の 3 セットで使います。どれも Python なのでどこかに組み込んで使えればいいなと思ってます。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants