编写供国际使用的软件的最佳实践 (i18n)

2023-11-24

我正在寻求编写过国际通用软件的专家的意见。我想了解人们在每个逻辑软件层(数据(rdbms)、业务(中间件)、用户界面)所采用的最佳实践。

谢谢你提供的所有帮助。


Data

  • 当您使用 UTF-8 时,请做好每个字符最多占用 3 个字节的准备(对于中文),这意味着 VARCHAR(20) 现在需要是 VARCHAR(60)。
  • 除非你really有充分的理由这样做,看在上帝的份上,不要将你的 UI 翻译存储在数据库中。

Business

  • 在需求上花费大量时间。首先,对应用程序中的每个屏幕进行屏幕截图,将其放入文档中,然后开始在需要 i18n 支持的内容周围绘制方框。然后将每个框映射到需要更改的代码区域。

UI

Don’t

string foo = "Page " + currentPage + " of " + totalPages;

Do

string foo = string.Format("Page {0} of {1}", currentPage, totalPages);

为什么?词序很重要。

<value>Page {0} of {1}</value>
 <value>{1}ページ中の第{0}ページ</value>

UI 中没有什么是神圣的即使是像将正数显示为绿色、将负数显示为红色这样基本的东西也是如此公平的比赛.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

编写供国际使用的软件的最佳实践 (i18n) 的相关文章

随机推荐

  • ListView Final Column Autosize 创建滚动条

    我正在实现一个派生自 ListView 的自定义控件 我希望最后一列填充剩余空间 这是一个很常见的任务 我已经通过重写 OnResize 方法来解决这个问题 protected override void OnResize EventArg
  • 工具栏中图标和标题之间的填充/空格(Android 24)

    使用新的Android 24 我发现图标和标题Toolbar有更宽的填充 我找不到任何方法来解决这个问题 Example MainActivity java public class MainActivity extends AppComp
  • 无法编译SSIS组件; Visual Studio 2008 中缺少程序集

    SSIS 中没有通过 HTTP 下载文件的标准控制流任务 我尝试过一些解决方法 执行进程 wget 脚本任务 HttpClientConnection 但得出的结论是 执行此任务的最可靠且可重用的方法是创建自定义组件 我尝试通过以下方式做到
  • Python正则表达式使用点或逗号作为分隔符来表示带或不带小数的数字?

    我正在学习正则表达式 现在我正在尝试匹配一个或多或少代表这一点的数字 zero or more numbers possibly a dot or comma zero or more numbers 没有点或逗号也可以 所以它应该匹配以下
  • 如何使用 JMeter 测试 WCF Web 服务?

    我有一个托管在 IIS 上的 WCF Web 服务 它公开了一个采用三个整数参数的方法 我有一个简单的基于控制台的客户端 可以调用此方法 int InsertNewOrder short quantity int custID int pr
  • ASP.NET MVC 中的替代用户管理

    我正处于新 ASP NET MVC 应用程序的规划阶段 要求之一是存储一些用户信息 这些信息不属于 ASP NET MVC 附带的 User 类中的标准集 我想这可以归结为两个问题 1 我可以编辑已经使用的类来存储我需要的信息吗 2 如果我
  • JavaScript 中的“未捕获类型错误:对象不是函数”

    我无法理解为什么这不起作用 我的表单上有两个字段 当我单击按钮时 另一个文本字段值将更改为该函数的值 我怎样才能让它发挥作用 function calculate var odometerStart parseFloat document
  • 在 VBA 中查找 Excel 工作表的底部

    我想选择工作表的底部 但不要选择在使用 存储的内容下方 我可能有 10 000 行 但肯定没有 65 536 行 我不会提前知道有多少行 在 Excel 本身中 无论如何 在最近的版本中 Excel 97 就不那么友好了 您可以按 Ctrl
  • 带有注释的漂亮打印的 haskell 源代码

    我正在尝试重新格式化 重新打印 haskell 源代码 删除 添加空格 换行符 更改缩进样式 我已经找到包裹了Haskell src exts它可以解析并漂亮地打印 haskell 源代码 使用功能parseFileWithComments
  • C++。加权 std::shuffle

    有没有一种方法可以使用标准库进行漂亮而优雅的加权洗牌 有std discrete distribution 我想要的是这样的 std vector
  • CSS 类选择器样式未应用于 React 项目

    使用 Webpack 开发 React 项目 在 style css 中添加一些样式并导入到组件中import style from style css 添加没有选择器的元素 例如body div 风格很好 但我遇到了课程问题 设置类名与
  • Spring WebClient - 如何处理错误场景

    我们正在使用org springframework web reactive function client WebClient with reactor netty http client HttpClient作为 Spring 5 1
  • 如何获取 Vue 更新钩子中的更改?

    如果我有一个像这样的 Vue 组件 有没有办法获得导致更新的更改 就像如何watch钩子接受前一个和下一个数据的参数吗 watch someProp next prev you can compare states here React 似
  • Document.getElementById() 返回名称等于指定 id 的元素

    我之前曾在this SO关于 IE6 7 以及某些版本的 Opera 的有趣行为document getElementById可以找到一个元素 其name属性已定义 但未定义id属性 使得 function f document getEl
  • Angular Universal - 排除路线

    是否可以对某些路线不使用角度通用 我想对我的静态页面使用角度通用 当我登录我的应用程序时 我不想使用它 我想用 app 排除路由 请问我该怎么做 非常感谢 这是我的 server ts These are important and nee
  • Raspberry Pi 上的 crontab 无法播放音频

    我正在尝试让我的 Raspberry Pi 当前连接到蓝牙扬声器 以便每天按计划播放音频文件 其中我的cron工作正在更新中 daily获得新的时间 这基本上是祈祷的召唤 crontab l daily home pi athan upda
  • 来电屏幕上的活动弹出窗口

    我正在尝试覆盖来电屏幕 我知道我无法更改它 所以我正在尝试在顶部弹出一个活动 我的代码工作正常 除非手机闲置了几分钟 My code AndroidManifest xml
  • 将两个或多个 Crystal Reports 合并为一个 PDF

    我有一个复选框列表 如果我选择两个或多个值 则 CheckBoxList SelectedValues 将作为参数一一传递 并且我想为每个 SelectedValue 生成 PDF 格式的 Crystal Report 并且我想将所有 Cr
  • onDestroy之后是否可以调用回调方法?

    在我的应用程序的最新版本中 一些用户遇到了我无法重现的崩溃 目前仅Samsung设备运行Lollipop遇到这个问题 但这可能只是巧合 在分析了堆栈跟踪和相关代码之后 我想我可能已经找到了罪魁祸首 为了测试我的假设 我将代码简化为下面的代码
  • 编写供国际使用的软件的最佳实践 (i18n)

    我正在寻求编写过国际通用软件的专家的意见 我想了解人们在每个逻辑软件层 数据 rdbms 业务 中间件 用户界面 所采用的最佳实践 谢谢你提供的所有帮助 Data 当您使用 UTF 8 时 请做好每个字符最多占用 3 个字节的准备 对于中文