首页 文章

App Maker中的翻译模型

提问于
浏览
0

我想用多语言在我的页面中制作字段描述和标签文本 . 最初它们是英文的,我可以让用户通过谷歌翻译翻译它们 . 为了避免翻译错误,我想实现一个包含的翻译数据模型

  • FieldDisplayName / LabelText

  • FieldDisplayName_DE

  • FieldDisplayName_FR

  • FieldDisplayName_IT

所有页面都包含一个页眉片段,其中包含菜单按钮,搜索框等,如 Starter App 模板中所示 . 我打算在页眉中集成一个下拉小部件,允许在语言(DE,EN,FR,IT,...)之间进行选择 . 是否可以将显示名称绑定到用户的选择?我该如何实现呢?

2 回答

  • 1

    提供最高翻译质量的最简单方法(实现/使用/维护)将引入具有以下结构的翻译数据模型:

    +----+--------+------------+------------+------------+-----+
    | Id | Locale | FirstName  | LastName   | Age        | ... |
    +----+--------+------------+------------+------------+-----+
    | 1  | EN     | First name | Last name  | Age        | ... |
    +----+--------+------------+------------+------------+-----+
    | 2  | RU     | Имя        | Фамилия    | Возраст    | ... |
    +----+--------+------------+------------+------------+-----+
    | 3  | DE     | Voornaam   | Achternaam | Leeftijd   | ... |
    +----+--------+------------+------------+------------+-----+
    | 4  | ...    | ...        | ....       | ...        | ... |
    +----+--------+------------+------------+------------+-----+
    

    在此模型中,每列代表应用程序中的唯一标签,每行代表支持语言的标签翻译 . 此模型可以轻松用于标签绑定:

    @datasources.UserTranslations.item.FieldNameToTranslate
    

    维护这些翻译也很容易,只需在UI上拖放可编辑的表格即可 .

    这是UserTranslations数据源的query script

    // Assuming that you already have robust user settings implementation.
    var userSettings = getUserSettings_();
    
    var query = app.models.Translation.newQuery();
    query.filters.Locale._equals = userSettings.Locale;
    
    return query.run();
    

    从根本上说是 different implementation

    这是该流程的超高级服务器 pseudo script

    var userLocale = getUserLocaleFromUserSettings();
    var fieldsDisplayNames = getFieldsDisplayNames(app.models.Translation);
    var translations = translate(fieldsDisplayNames, 'en', userLocale);
    
    var record = app.models.Translation.newRecord();
    
    mapRecordFieldsToTranslations(record, translations);
    
    return [record];
    
  • 0

    经过一些试验,翻译模型对我的要求来说太迟了 . 因此,我已将绑定表达式硬编码到我想要翻译的标签中 . 绑定表达式看起来有点像这样:

    (@pages.UserSettings.LanguageDropdown.value == 'EN') ? 'Contact' : 'Kontakt'
    

相关问题