Moment: `sk.js`: исправление ошибок l10n (чешизмы)

Созданный на 12 мар. 2020  ·  16Комментарии  ·  Источник: moment/moment

Опишите ошибку

Предлог za в смысле in в in a minute - это чешский язык (слово или употребление, заимствованное из чешского языка), поэтому moment za pár sekúnd правильно на чешском и неверно на словацком. В словацком языке правильный предлог - o во фразе.

Ожидаемое поведение

Например: используйте o pár second вместо za pár sekúnd (что означает: in a few seconds ).


Обновление: другая проблема - это pred 3 dny который должен быть pred 3 dňami . Проблема не в moment , а в dayjs , плохо.

Help Wanted Language Up-For-Grabs

Самый полезный комментарий

Хм ... Возможно, мы можем различить использование длительностей и моментов. Я оставлю его открытым еще ненадолго.

Все 16 Комментарий

@ k2s мысли?

  1. утверждение в этом билете не соответствует действительности, это действительная конструкция на словацком языке
  2. все обсуждалось здесь https://github.com/moment/moment/pull/5409#issuecomment -618482801
  3. решение - .replace('za', 'o') , лучшим решением на данный момент было бы предоставление параметра контекста для перевода

@ k2s , хотя мое утверждение в OP не _ полностью_ верно, оно _ частично_ верно. Как текущая реализация вопроса в Moment. И поскольку реализация _не совсем коррент_, я думаю, что это нужно исправить. Понятия не имею, как, но ИМХО вывод должен быть _всегда_ правильным.

Предлагаемое вами решение ( .replace('za', 'o') ) даже не является обходным путем, поскольку оно оставляет результат _ частично_ правильным, хотя и в обратном порядке.

Основываясь на источниках из вашего комментария в # 5409 (которые действительно действительны), я написал в комментарии следующее :

  • za используется, когда мы говорим о _периоде_, в течение которого что-то делается (например, _Он приготовил это за час_);
  • o используется, когда мы говорим о _ моменте времени_ (например, _Она вернулась через минуту_).

Следовательно, текущий вывод неверен для o (но верен для za ), и если кто-то решит использовать для 'решения', они получат правильный вывод для o , но не для za .

@tukusejssirs благодарим вас за то, что вы пытаетесь реализовать и улучшить поддержку словацкого языка в библиотеках. Что касается библиотеки моментов, нужно иметь в виду, что это установленная библиотека, используемая многими проектами, и чтобы что-то изменить, больше всего не нарушает существующий код.

имя этого билета говорит, что возвращенное значение za грамматически неверно, что означает, что это ошибка, и ее нужно исправить. это неправда.

для правильного возврата za или o требуется дополнительный контекст, который не требуется для английского языка и который, как мне известно, не поддерживается соответствующими функциями моментов

Я понимаю ваше желание сделать его идеальным, и способ добиться этого - создать плагин момента, который будет предоставлять методы с контекстной поддержкой.

Ну, я попробовал передать то же самое: # 5206, которое потом было возвращено :-(
Я не верю, что есть так много словацких пользователей, которые все равно заметили бы изменение za / o , поэтому я не понимаю, почему они сохраняют неправильную версию. Оба варианта допустимы, хотя я предполагаю, что большинству пользователей нужна форма «вовремя в будущем», для которой следует использовать предлог o . Форма «потребовалось время / это было сделано в», для которой в словацком языке используется предлог za , встречается гораздо реже.

@dakujem , спасибо за ваш комментарий. Это заставляет меня чувствовать, что я не одинок в этом. 😄

Когда я создавал этот PR, я _ подумал_, что мы всегда должны использовать o вместо za , но @ k2s доказал, что я ошибаюсь (см. Этот мой комментарий ), что оба они верны, но не взаимозаменяемы.

Следовательно, с моей _current_ точки зрения, если мы используем только za или только o , оба они одинаково неверны, поскольку оба _не всегда верны_. Хотел бы я предложить алгоритм (функцию), который работал бы со случаями, когда какой предлог следует использовать, но я не настолько хорош в программировании ... может быть, вы сможете это сделать. : смайлик:

Действительно, используются оба. Могу поспорить, что o встречается чаще. Но...

К сожалению, я не парень JS 🤷, мой плагин JS был бы плохим 😆

@dakujem , сейчас нам нужен не _code_, а _algorithm_ - как проверить, какой предлог Moment должен выводить?

Я не знаю, как мы можем различать моменты времени и периоды времени.
Думаю, здесь я не буду вносить никаких изменений.

Локали всегда могут быть изменены отдельными пользователями.
https://momentjs.com/docs/#/customization/

Какая жалость.

Хм ... Возможно, мы можем различить использование длительностей и моментов. Я оставлю его открытым еще ненадолго.

Мне это нравится.

Есть ли способ получить эти «метаданные» сейчас? Или это то, что вам нужно внедрить в Moment?

Я не понимаю о чем ты.

теперь:
Если вы используете длительность, вы можете обновить локаль для o.
Если вы используете моменты, он уже будет использовать za.

Я не понимаю о чем ты.

теперь:
Если вы используете длительность, вы можете обновить локаль для o.
Если вы используете моменты, он уже будет использовать za.

С другой стороны, это не решит проблему, потому что in an hour означает как o hodinu (например, _I'll вернусь через час._, где используется момент времени o, т. Е. now + 1 hour ) и za hodinu (как в He cooked it in an hour. , где говорится о продолжительности времени).

Если вы все еще думаете, что это решит эту проблему, поделитесь со мной некоторыми фрагментами кода, как я могу отличить их. Благодарю.

Я перечитал это обсуждение еще раз.

Похоже, разница между za и o зависит от конкретного контекста предложения. Возможно, есть какие-то лингвистические тексты, обсуждающие это, но это звучит более конкретно, чем может быть реализовано в этой библиотеке. Например, Moment.js не может различить «Он приготовил за час» и «Я вернусь через час».

Похоже, что лучшая стратегия - использовать один и при необходимости заменить его вне Moment.js.

Если у вас есть другие идеи, не стесняйтесь открывать заново. Удачи!

Moment.js не может отличить «Он приготовил за час» от «Я вернусь через час».

@marwahaha , у меня тоже такое впечатление. Жалко, но это правда. Жаль, что большинство инструментов l10n настолько ориентированы на английский язык, что их нельзя изменить для _полной_ поддержки других локалей. Я бы хотел, чтобы Moment был похож на Fluent .

А пока считаю, что это тупик.

Была ли эта страница полезной?
0 / 5 - 0 рейтинги