返回首页
最新
我一直在申请一些在“谁在招聘”上发布的职位(EM),结果连面试都没有就被拒绝了,然后这些职位又一次又一次地重新发布。我能接受自己不是最佳候选人,但我无法理解在几个月内竟然没有一个候选人足够优秀,这到底是怎么回事?
嗨,HN!我们刚刚发布了一个开源的 React 打包插件,使应用程序在构建时支持多语言,而无需修改代码。
React 应用程序的本地化通常需要实现国际化(i18n)框架、将文本提取到 JSON 文件中,并将组件包裹在翻译标签中——基本上是在开始翻译之前,需要重写整个代码库。
我们的 React 打包插件完全消除了这种摩擦。您只需将其添加到现有的 React 应用中,指定所需的语言,它便会自动使您的应用程序支持多语言,而无需触及组件代码的任何一行。
以下是一个展示其工作原理的视频: [https://www.youtube.com/watch?v=sSo2ERxAvB4](https://www.youtube.com/watch?v=sSo2ERxAvB4)。文档可以在 [https://lingo.dev/en/compiler](https://lingo.dev/en/compiler) 找到,示例应用在 [https://github.com/lingodotdev/lingo.dev/tree/main/demo](https://github.com/lingodotdev/lingo.dev/tree/main/demo)。
去年,我们 Twitter 社区的一位开发者告诉我们:“我不想用 `<T>` 标签包裹每个 React 组件,也不想将字符串提取到 JSON 中。我能否只包裹整个 React 应用并使其支持多语言?”
我们最初的反应是:“这不是 React 中 i18n 的工作方式。”但几个小时后,我们发现自己深陷技术难题,开始思考如果这真的是可能的呢?
这个问题促使我们构建了“本地化编译器”——一个用于 React 的中间件,它接入代码库,处理 React 代码的抽象语法树(AST),确定可翻译的元素,将每个上下文边界输入到大型语言模型(LLMs)中,并将翻译结果嵌入构建中,使用户界面在几秒钟内实现多语言支持。
所有操作都在构建时本地进行,保持 React 项目作为真实来源。无需修改代码、提取内容或维护单独的翻译文件,但可以通过 data-lingo-* 属性进行覆盖。
构建这个插件比我们预期的要复杂。除了遍历 React/JS 的抽象语法树外,我们还必须解决一些具有挑战性的问题。我们希望找到一种方法,确定应该一起翻译的元素,以便例如,包裹在 `<a>` 链接标签中的短语不会因为被孤立处理而被误翻译。我们还希望检测内联函数调用,并在编译时代码生成过程中优雅地处理它们。
例如,这整个文本块被我们的本地化编译器识别为一个单一的翻译单元,保留了 HTML 结构和上下文,以供大型语言模型使用。
```
function WelcomeMessage() {
return (
<div>
Welcome to <i>our platform</i>! <a href="/start">Get started</a> today.
</div>
);
}
```
最大的挑战是使我们的编译器与热模块替换(Hot Module Replacement)兼容。这使得开发者可以用英语编写代码,同时即时看到西班牙语或日语的用户界面,这对于捕捉由于文本扩展或收缩而导致的布局问题非常重要,因为不同语言在屏幕上占用的空间不同。
为了提高性能,我们实现了激进的缓存机制,存储 AST 分析结果,并仅重新处理已更改的组件。增量构建在大型代码库中依然保持快速,因为开发者在任何时候只更新有限数量的组件,并且我们对大型语言模型的调用进行了大量并行化。
在大型语言模型出现之前,这种方法在技术上是可行的,但在实际中几乎没有用,因为要获得精确的翻译,仍然需要熟悉产品领域的人类翻译者。然而,现在,借助上下文感知模型,我们可以自动生成不错的翻译。
我们很高兴终于使其准备好投入生产,并与 HN 社区分享这一成果。
运行 `npm i lingo.dev`,查看文档 [lingo.dev/compiler](https://lingo.dev/compiler),尝试破坏它,并告诉我们您对这种 React 国际化方法的看法!
<a href="https://morphllm.com">https://morphllm.com</a>
<a href="https://www.ycombinator.com/companies/morph/jobs/jfA0Kqd-senior-machine-learning-engineer">https://www.ycombinator.com/companies/morph/jobs/jfA0Kqd-senior-machine-learning-engineer</a><p>如果这些术语引起了你的兴趣,你可能非常适合这个职位!包括规范解码、分散预填充、EM5M2量化。
我在最近的销售数据上训练了一个堆叠集成模型,并将其转化为我的初创公司“房产交易查找器”。只需输入邮政编码,它就能找到低于市场价值的待售房产!
我在每个项目中都不断重复使用相同的 `array.slice(i, i + n)` 逻辑。最终,我决定停止这种做法,干脆做一个工具库。
Chonkify 是一个小型(约 870B)、零依赖的 JS/TS 库,用于将任何类型的数据分块:
- 适用于数组、字符串、缓冲区、集合、映射、类数组对象、类型化数组
- 支持异步可迭代对象(非常适合批量处理流)
- Unicode 安全(正确处理字形簇、表情符号等)
- 以 ESM 为优先,支持 TypeScript
我主要是为自己制作的,但觉得其他人也可能会觉得它有用。
欢迎反馈!
我是一名高级网页开发人员,有时会在复杂的依赖关系中挣扎,这些依赖关系掩盖了真正的技术运作方式。<p>有时我希望退一步,简化我的工作方式,基本上只使用少数工具/语言,这些工具/语言虽然理念较少,但却能做成大事!<p>C语言是一种容易理解但非常难以掌握的语言。<p>我非常好奇谁在使用它,以及用来做什么!<p>谢谢 :)