projectfluent / fluent.js

JavaScript implementation of Project Fluent
https://projectfluent.org/
Apache License 2.0
924 stars 77 forks source link

Request Feature: Support prefix identifier for message #624

Open ngdangtu-vn opened 9 months ago

ngdangtu-vn commented 9 months ago

I would like to ask if it is possible to do so? Currently I'm implementing Fluent to Lume: https://gitlab.com/ndt-deno/lume-fluent

So far it's all good. But in future, I would like to make a scope feature base on fluent file name. I was thinking it would be great if I can get fluent file name and turn it into prefix of every message. But FluentBundle doesn't seems to support it. I wonder if it's make sense (and ok) to you guys to have that feature in the lib?

Maybe an option in FluentResource would be cool:

new FluentResource('msg-id = a message ID', { namespace: 'prefix' })

The result will be prefix-msg-id. How was that?

ngdangtu-vn commented 9 months ago

Also, may I ask why we wrap a whole parse inside the FluentResource class constructor? Can we use private method if we don't want it to get exposed?

zbraniecki commented 9 months ago

But FluentBundle doesn't seems to support it.

The idea behind the bundle is that it can be composed of files from many sources. In other words, a message with id foo can be provided by either file menus.ftl or common.ftl. Your request for prefixes would not work with that.

It may be useful for different models than we planned.

may I ask why we wrap a whole parse inside the FluentResource class constructor?

Intentional as well. You're not supposed to handle AST in runtime.

ngdangtu-vn commented 9 months ago

Can we add prefix on FluentResource?

new FluentResource('msg-id = a message ID', { namespace: 'prefix' })

Intentional as well. You're not supposed to handle AST in runtime.

Ok, cool.

stasm commented 9 months ago

FluentResource was written a long time ago, when private methods didn't exist in JS. Today, moving the parsing logic to a private method would probably make sense.

ngdangtu-vn commented 9 months ago

FluentResource was written a long time ago, when private methods didn't exist in JS. Today, moving the parsing logic to a private method would probably make sense.

I think I can do that, if you don't mind.

stasm commented 9 months ago

CC @eemeli, who leads the development of Fluent.