internationalization - 在 i18n 中命名消息属性的正确方法是什么?

标签 internationalization naming-conventions

我们确实有一个应该翻译成不同语言的网站。一些措辞在准备翻译的消息属性文件中。我现在想将其余文本添加到这些文件中。

给文本 block 命名的好方法是什么?

<view>.<type>.<name>

我们主要有网页,一些元素/模块在一些网站上重复。

最佳答案

我们使用点表示法和驼峰命名法提出了以下 key 命名约定(Java,顺便说一句):

标签键 (表单标签、页面/表单/应用程序标题等……即不是完整的句子;用于多个 UI 位置):

如果标签表示 Java 字段(即表单字段)并且与表单标签匹配:标签.nameOfField
其他:标签.sameAsValue

例子:

  • label.firstName = 名字
  • label.lastName = 姓氏
  • label.applicationTitle = 应用程序标题
  • label.editADocument = 编辑文档

  • 内容 key :

    projectName.uiPath.messageOrContentType.n.*

    在哪里:
  • 项目名称 是项目的简称(或从 Java 包派生的名称)
  • uiPath 是内容键
  • 的 UI 导航路径
  • 消息或内容类型 (例如,添加、删除、更新、信息、警告、错误、标题、内容等)应根据内容类型添加。示例消息: (1) 页面已更新。 (2) 处理您的请求时出错。
  • n.* 处理以下情况:当单个页面上有多个内容区域时(例如,当内容被图像分隔时),当内容在多个段落中或当内容在(无)有序列表中时 -应附加数字标识符。示例: ...内容.1 , ...内容.2
    当页面上有多个内容区域并且需要进一步分解一个或多个内容区域时(基于上面的 HTML 示例),可以将辅助数字标识符附加到键中。示例: ...内容.1.1 , ...内容.1.2

  • 例子:
  • training.mySetup.myInfo.content.1 = 这是内容 1 的第一句。这是内容 1 的第二句。该内容将被段落标签包围。
  • training.mySetup.myInfo.content.2 = 这是内容 2 的第一句。这是内容 2 的第二句。该内容也会被段落标签包围。
  • training.mySetup.myInfo.title = 我的信息
  • training.mySetup.myInfo.updated = 您的个人信息已更新。

  • 优点/缺点 :

    + 标签键可以很容易地重复使用;位置无关紧要。
    + 对于未重复使用的内容键,在 UI 上定位页面将简单且合乎逻辑。

    - 翻译人员可能不清楚标签键在 UI 上的位置。对于不浏览页面的翻译人员来说,这可能不是问题,但对于开发人员来说可能仍然是一个问题。
    - 如果内容键必须在 UI 上的多个位置使用(很可能),则键名称选择在其他位置将没有意义。在我们的例子中,管理不关心内容区域的重复值,所以在这种情况下我们将使用不同的键(在 UI 上显示位置)。

    由于我们目前正在改进我们的资源包,因此我们将不胜感激有关此约定的反馈——尤其是可以改进它的反馈! :)

    关于internationalization - 在 i18n 中命名消息属性的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4366107/

    相关文章:

    javascript - JavaScript 中对象内部函数的命名约定?

    drupal - 在代码中没有英文默认值的情况下在 drupal 中翻译字符串

    python - 使用本地化日期进行 Django 查询

    android - 带 alpha 的颜色的 Android 命名约定是什么?

    java - 包含字符串格式的变量是否有通用的命名约定?

    首字母缩略词的 C# 命名约定

    java - Spring MVC 响应中中文字符显示不正确

    java - 按字母顺序排序时忽略变音符号

    javascript - Yii 提交按钮 i18n

    sql - 表命名困境 : Singular vs. 复数名称